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

Java hot-code-replace fails on static methods

热代码替换适用于实例方法,但不适用于静态方法。我收到这个错误

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

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

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

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

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

  • 制作所有私有方法、字段和常量protected