在Eclipse调试器中,哪些更改可以"热代码替换"到正在运行的JVM中?

PBJ*_*PBJ 8 java eclipse debugging jvm

在Eclipse中,如果在"Debug"下运行程序,则可以对代码进行更改,并且大多数时候它会立即生效.

但有时候,它不会 - 在这种情况下会弹出一条消息,或者在"调试"窗格中的线程旁边说"(可能不同步)".

是什么决定了可以热插拔的变化?我注意到这些变化通常会失败:

  • 引入新的匿名内部类
  • 在实例化类时更改类(重命名/添加/删除字段和方法)
  • 添加try-catch块

但有时似乎几乎是随机的.确定代码是否可以替换的逻辑是什么?

Ste*_*ers 9

方法语句(程序代码)工作.与添加,删除或更改类模式相关的所有内容都不起作用.所以没有修改继承,字段,提取方法,更改签名等.

如果您同时禁止任何操作,通常热交换方法语句不起作用.然后,热交换连接被"破坏",所以说.

我不确定的一件事是匿名课程.从来没有尝试过与热交换相关的问题.

编辑:zeroturnaround那边的人已经在他们的功能部分编译了一个列表,jvm调试器不能开箱即用来推广他们的产品:http://www.zeroturnaround.com/jrebel/features/.无论您是否喜欢该工具,该列表都反映了我的经验.