2013-04-04 72 views
3

我使用Eclipse IDE的Java开发人员Eclipse IDE的调试与代码变化

版本:赫利俄斯服务发布1 版本ID:20100917-0705

在远程调试的Web应用程序和Tomcat 7.0.37,当我做了一些更改,甚至是一行,所做的更改无法进入运行时,所以我需要重新编译并重新部署war应用程序。浪费了很多时间。该消息:

Hot code replace failed - Delete method not implemented 

我不明白这条消息。

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

回答

3

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

+0

有时它可以工作,但有时它不起作用。 – Dave 2013-04-25 02:33:01

-2

我觉得没有办法反映在调试模式下的代码更改

  • 调试模式是跟踪程序流程,并发现如果在特定的代码块的任何问题或错误....
  • 它只是指向eclipse中的代码行,它在你的tomcat中运行,即即。在Eclipse代码不用于运行应用u必须安装的代码或将在Tomcat中运行

因此您在Eclipse中所做的更改着在tomcat的代码反映

+1

有时它有效,比如5%,它被称为热代码替换。 – Dave 2013-04-04 15:19:00

+0

哦,拜托..在做这件事之前,先了解一下你正在回答的问题。 – stolsvik 2015-04-19 01:55:28

1

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

有一点需要注意的是,对某些方法中看似“普通代码”的更改实际上需要java编译器添加或删除方法 - 因此它将失败。这发生在例如如果你在一个内部类中访问外部类中的私有字段 - java编译器将需要向外部类添加综合访问器方法,让内部类访问这些字段 - 因此将无法进行热代码替换。另外,如果你删除了一些访问这些字段的代码,java编译器想要删除相应的综合访问器方法,这也会失败。