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
热代码替换适用于实例方法,但不适用于静态方法。我收到这个错误
请注意,我只是将 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