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"
传递它们
我有一个用 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"