我正在使用Eclipse IDE for Java Developers
版本:Helios Service Release 1 构建ID:20100917-0705
在使用tomcat 7.0.37的远程调试Web应用程序中,当我进行一些更改,甚至是一行时,更改无法进入运行时,因此我需要重新编译并重新部署war应用程序。浪费了很多时间。消息:
Hot code replace failed - Delete method not implemented
我不明白这条消息。
任何人都知道如何在调试模式下自动反映代码更改的秘诀?感谢。
答案 0 :(得分:3)
我发现要使热代码替换工作,被修改/替换的代码必须在执行堆栈中。因此,您可以热替换对已停止的方法所做的更改,但是一旦您退出该方法,就不能热替换该方法的更改...除非您在连续调用时首先停止在该方法中方法。
答案 1 :(得分:1)
使用标准JVM(Oracle),您只能修改现有方法。不支持添加和删除方法,以及更改类(移动方法,字段)的结构。为此,请转到JRebel!
有一点需要注意的是,在某些方法中看似“正常代码”的更改实际上需要java编译器添加或删除方法 - 因此它将失败。这发生在例如如果你在内部类中访问外部类中的私有字段 - java编译器将需要向外部类添加合成访问器 - 方法以允许内部类访问这些字段 - 因此将无法进行热代码替换。此外,如果删除访问此类字段的某些代码,则java编译器需要删除相应的合成访问器方法,该方法也将失败。
答案 2 :(得分:-2)
我认为无法在调试模式中反映代码更改
因此,您在eclipse中所做的更改不能反映在tomcat代码中