小编典典

在Eclipse调试器中,可以将“热代码”替换为正在运行的JVM中的哪些变化?

java

在Eclipse中,如果您在“调试”下运行程序,则可以对代码进行更改,大多数情况下,更改将立即生效。

但是,有时它不会-在这种情况下,它会弹出一条消息,或在“调试”窗格中的线程旁边显示“(可能不同步)”。

是什么决定了可以热交换的更改类型? 我注意到这些更改通常会失败:

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

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


阅读 223

收藏
2020-11-13

共1个答案

小编典典

方法语句(过程代码)起作用。与添加,删除或更改类模式有关的所有操作均不起作用。因此,无需修改继承,字段,提取方法,更改签名等。

如果同时执行任何禁止的操作,通常热交换方法语句将不起作用。可以这么说,然后,热交换连接被“断开”。

我不确定的一件事是匿名类。从未尝试将其与热交换结合使用。

编辑:在zeroturnaround那里的家伙已经在其功能部分中编译了一个列表,这些列表是jvm调试器不能直接使用来推广其产品的:http
:
//www.zeroturnaround.com/jrebel/features/。无论您是否喜欢该工具,列表都反映了我的经验。

2020-11-13