带代码更改的EclipseIDE调试

带代码更改的EclipseIDE调试,eclipse,debugging,Eclipse,Debugging,我正在为Java开发人员使用EclipseIDE 版本:Helios Service Release 1 构建id:20100917-0705 在使用tomcat 7.0.37远程调试Web应用程序时,当我进行一些更改时,即使是一行,也无法在运行时进行更改,因此我需要重新编译并重新部署war应用程序。浪费了很多时间。信息: Hot code replace failed - Delete method not implemented 我不明白这个信息 有人知道如何在调试模式下自动反映代码更改的

我正在为Java开发人员使用EclipseIDE

版本:Helios Service Release 1 构建id:20100917-0705

在使用tomcat 7.0.37远程调试Web应用程序时,当我进行一些更改时,即使是一行,也无法在运行时进行更改,因此我需要重新编译并重新部署war应用程序。浪费了很多时间。信息:

Hot code replace failed - Delete method not implemented
我不明白这个信息


有人知道如何在调试模式下自动反映代码更改的秘密吗?谢谢。

我认为没有办法在调试模式下反映代码更改

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

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

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


需要注意的一点是,对某些方法中看似“普通代码”的更改实际上需要java编译器添加或删除方法,因此它将失败。例如,如果内部类中的用户访问外部类中的私有字段,java编译器将需要向外部类添加合成访问器方法,以允许内部类访问这些字段,因此热代码替换将失败。此外,如果删除访问这些字段的一些代码,java编译器希望删除相应的合成访问器方法,这也会失败。

有时它可以工作,比如5%,这称为热代码替换。哦,请。。在这样做之前,先弄清楚你在回答什么。