代码之家  ›  专栏  ›  技术社区  ›  Joshua Fox

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

  •  0
  • Joshua Fox  · 技术社区  · 6 年前

    热代码替换对我的实例方法有效,但对静态方法无效。我知道这个错误 enter image description here

    注意,我只是添加了 println 到一具尸体 static private 甚至 public 方法,不更改任何方法修饰符,如错误消息所建议的。如何实现此热替换?

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   howlger df778899    6 年前

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

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

    下列任一项可能会解决您的问题: