Eclipse IDE调试,代码更改

时间:2013-04-04 04:23:40

标签: eclipse debugging

我正在使用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

我不明白这条消息。

任何人都知道如何在调试模式下自动反映代码更改的秘诀?感谢。

3 个答案:

答案 0 :(得分:3)

我发现要使热代码替换工作,被修改/替换的代码必须在执行堆栈中。因此,您可以热替换对已停止的方法所做的更改,但是一旦您退出该方法,就不能热替换该方法的更改...除非您在连续调用时首先停止在该方法中方法。

答案 1 :(得分:1)

使用标准JVM(Oracle),您只能修改现有方法。不支持添加和删除方法,以及更改类(移动方法,字段)的结构。为此,请转到JRebel!

有一点需要注意的是,在某些方法中看似“正常代码”的更改实际上需要java编译器添加或删除方法 - 因此它将失败。这发生在例如如果你在内部类中访问外部类中的私有字段 - java编译器将需要向外部类添加合成访问器 - 方法以允许内部类访问这些字段 - 因此将无法进行热代码替换。此外,如果删除访问此类字段的某些代码,则java编译器需要删除相应的合成访问器方法,该方法也将失败。

答案 2 :(得分:-2)

我认为无法在调试模式中反映代码更改

  • 调试模式是跟踪程序流程并查找特定代码段是否存在任何问题或错误....
  • 它只是指向eclipse中的代码行,它在你的tomcat中运行,即。 eclipse中的代码不用于运行应用程序已安装或放入tomcat运行的代码

因此,您在eclipse中所做的更改不能反映在tomcat代码中