JRebel 不重新加载更改

JRebel not reload changes

我有一个用 jhipster (spring-boot) 构建的项目。
运行 我的项目 运行 从 Eclipse 配置 IDE:

clean spring-boot:run -Dmaven.test.skip="true" -Drebel.remoting_plugin="true"

每次我保存更改时,jrebel 都会给我如下错误:

[2017-12-03 22:15:55] [Project my-project, server localhost] Connecting to server to sync project
[2017-12-03 22:15:55] Unexpected response from server. Raw Headers: {date=Sun, 03 Dec 2017 15:15:55 GMT, allow=GET, HEAD, expires=0, transfer-encoding=chunked, x-xss-protection=1; mode=block, x-content-type-options=nosniff, connection=keep-alive, content-type=application/json;charset=UTF-8, cache-control=no-cache, no-store, max-age=0, must-revalidate, pragma=no-cache, x-application-context=my-project:swagger,dev:8080}
[2017-12-03 22:15:55] Unexpected response from server. First kilobyte of content:
[2017-12-03 22:15:55] {
  "timestamp" : "2017-12-03T15:15:55.499+0000",
  "status" : 405,
  "error" : "Method Not Allowed",
  "exception" : "org.springframework.web.HttpRequestMethodNotSupportedException",
  "message" : "Request method 'POST' not supported",
  "path" : "/"
}

[2017-12-03 22:15:55] [Project my-project, server localhost] Synchronization failed! JRebel remote server did not respond. The remote server has to be started with the JVM argument: -Drebel.remoting_plugin=true.
[2017-12-03 22:15:55] Synchronization took 42 ms in total.

到底发生了什么? 如何解决?

我的环境:
- macOS
-jRebel 7.1.3
- spring-boot 1.5.9.RELEASE

提前致谢。

TL;DR

不要使用 -Drebel.remoting_plugin=true

而是使用 Help > JRebel > Configuration > Startup > 运行 从命令行在本地。


长版。

根据您的描述,您似乎是 运行 自己机器上的 Spring 启动应用程序。

仅当实际应用程序位于 与 IDE (eclipse) 不同的机器(或虚拟机)上时,才应使用参数 -Drebel.remoting_plugin=true您正在使用。

您也不需要使用 JRebel Eclipse 插件 synchronize 功能。 JRebel 将自己监视 target/classes 目录中 class 文件的更改。 当您使用 Eclipse 或 mvn compile 构建项目时,JRebel 将检测更改并重新加载 classes.

因此删除 remoting 参数并改为使用以下说明:在 Eclipse 中,从命令行转到 Help > JRebel > Configuration > Startup > 运行 locally。然后选择你的 JVM 和 Spring Boot.

查找 Maven Spring 引导插件的说明,并使用它们将 JRebel 代理添加到您的应用程序。


此外,您不能通过将 JVM 参数添加到命令末尾来将它们添加到 spring-boot:run。相反,您应该将参数添加到 MAVEN_OPTS 环境参数或使用 -Drun.jvmArguments="-Dsome.argument"

传递它们