【问题标题】:Eclipse IDE debugging with code change带有代码更改的 Eclipse IDE 调试
【发布时间】:2013-04-04 04:23:39
【问题描述】:

我正在为 Java 开发人员使用 Eclipse IDE

版本:Helios Service Release 1 内部版本号:20100917-0705

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

Hot code replace failed - Delete method not implemented

我不明白这个消息。

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

【问题讨论】:

    标签: eclipse debugging


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我觉得debug模式下没有办法反映代码变化

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

        因此您在 eclipse 中所做的更改无法反映在 tomcat 代码中

        【讨论】:

        • 有时会起作用,比如 5%,它被称为热代码替换。
        • 哦,拜托..在这样做之前先弄清楚你在回答什么。
        猜你喜欢
        • 2014-06-16
        • 2015-12-15
        • 1970-01-01
        • 1970-01-01
        • 2018-11-22
        • 1970-01-01
        • 2014-07-02
        • 2016-03-31
        • 2013-03-01
        相关资源
        最近更新 更多