Java热代码替换在静态方法上失败

时间:2018-07-29 10:45:50

标签: java eclipse google-app-engine hot-code-replace

热代码替换对我适用于实例方法,但不适用于静态方法。我得到这个错误 enter image description here

请注意,我只是将println添加到static private甚至public方法的主体中,而不更改错误消息所建议的任何方法修饰符。如何实现这种热替换?

我正在使用Eclipse Oxygen和Java 8 JRE。 Maven com.google.cloud.tool:appengine-maven-plugin用于以目标为目标在调试模式下启动应用
appengine:run。然后,我连接Eclipse远程调试器。

1 个答案:

答案 0 :(得分:1)

在热代码替换中,whole class file is replaced。要找出无法交换文件的确切原因,您必须将原始字节码与要更改的字节码进行比较。

默认情况下,Maven使用javac进行编译,而要交换的文件是使用Eclipse自己的Java编译器进行编译的。不同的优化可能导致类文件不可交换,尤其是在使用私有方法,字段或常量的情况下。

以下其中一项可能会解决您的问题: