Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ';热代码替换';不工作--Eclipse不工作';不要在JBoss上更改任何代码_Java_Eclipse_Jboss_Remote Debugging_Hotswap - Fatal编程技术网

Java ';热代码替换';不工作--Eclipse不工作';不要在JBoss上更改任何代码

Java ';热代码替换';不工作--Eclipse不工作';不要在JBoss上更改任何代码,java,eclipse,jboss,remote-debugging,hotswap,Java,Eclipse,Jboss,Remote Debugging,Hotswap,我目前遇到一个问题,即“热代码替换”无法在EclipseGalileo和JBoss4.2.3上工作 在其他应用程序中,我正在本地JBoss上运行一场爆发式的Java战争。构建它的项目由Maven管理。我使用Maven-goal-war:exploded构建项目,然后使用ANT脚本将该目录复制到JBoss 当我现在运行应用程序并在代码中的任何位置设置断点时,Eclipse会在调试模式下正确地在该行停止。 但是,当我对源文件进行更改并保存它时,Eclipse不会将此更改应用于JBoss。 例如,当我

我目前遇到一个问题,即“热代码替换”无法在EclipseGalileo和JBoss4.2.3上工作

在其他应用程序中,我正在本地JBoss上运行一场爆发式的Java战争。构建它的项目由Maven管理。我使用Maven-goal-war:exploded构建项目,然后使用ANT脚本将该目录复制到JBoss

当我现在运行应用程序并在代码中的任何位置设置断点时,Eclipse会在调试模式下正确地在该行停止。 但是,当我对源文件进行更改并保存它时,Eclipse不会将此更改应用于JBoss。 例如,当我将一个普通代码行添加到注释中时,调试器仍然会像处理常规Java代码一样处理该注释。或者,当我删除一行时,调试器似乎与文件不同步,并开始跨过括号

但我也没有收到任何“热代码替换错误”消息。在我看来,Eclipse将更改应用于源文件,但不将其应用于JBoss


为了使热代码替换工作,是否有任何必须打开的特殊首选项?或者在我如何构建应用程序并将其部署到JBoss中有没有错误?

我没有使用JBoss,但我有两个建议

  • 如果您使用启动配置在eclipse中运行应用程序 是否启用了“项目”-“自动生成”标志? 如果不是,则不会在运行时编译并忽略代码

  • 在远程模式下调试应用程序时,不能更改代码,但可以更改参数的值。(我想)


  • 我在Maven和Eclipse的项目中遇到了问题。未显示错误,但热代码替换不起作用。我读到“自动生成”必须被检查。我检查了一下,它还是不起作用。我在构建路径中的其他项目中有一些错误。我相信这就是错误所在。当我研究时,我发现我们必须取消选中“buildpath出错时中止构建”。我已经在下面的链接中给出了详细信息。

    首先检查的是项目/构建是否自动

    还可能需要检查应用程序服务器部署配置

    例如,对于JBoss,在Eclipse中的Servers视图中,双击服务器,会出现一个带有两个复选框的Deployment Scanners部分:

    • 添加缺少的部署扫描程序
    • 关闭前删除添加的部署扫描程序

    我最近在Eclipse 2019-06中遇到了这个问题,发现我必须取消选中首选项->Java->Debug->Hot Code Replace组中“替换包含编译错误的类文件”中的选项。所有其他选项都已选中。 在此之前,我得到了“热代码替换失败-未实现删除方法”,尽管我唯一的更改是ass-a System.out.println调用。
    我一更改该选项(在同一调试会话中),它就开始对我起作用。

    我在Open Liberty上也遇到了类似的问题。让我以接受的答案加上@user513365的答案为基础(因为那里的一个链接现在已经死了)

    就我而言,我有两个问题:

    1.生成路径错误 在我的例子中,我的不完整的构建路径是因为我使用的Maven项目只有src/main/java,但没有src/test/java(因此可能可以通过创建后者来解决这个问题)

    但我可以通过转到“首选项->Java->编译器->构建”并进行以下两个更改之一来修复热代码替换:

    要么:

  • 当生成路径出现错误时,取消选中“中止生成”
  • 使用下拉列表,将不完整的生成路径
    错误
    更改为
    警告
  • 2.确保已加载Eclipse构建的类 在我的例子中,我的远程JVM使用的是来自本地.m2 Maven存储库的完整JAR工件。启用“项目”-“自动构建”的公认答案忽略了一个微妙之处

    在我的例子中,如果我在附加调试器之后执行Eclipse构建,那么Eclipse项目构建只会执行热代码替换。是的,它将自动执行Eclipse构建,但是如果我重新启动远程JVM并简单地附加调试器,它仍然被配置为从本地.m2 JAR加载此类,而不获取本地更改

    关于此答案与其他答案的最后说明
    如果您不断更改自动生成的类,您可能不会注意到第2点中的细微之处,并且@user513365的答案中提到的可接受答案与生成路径错误结合在一起,您就只需要这些了。

    未启用“Project->build automatically”选项。现在我激活了它,一切正常。丹克,马库斯,谢谢你!这个问题已经让我发疯好几个星期了。热代码替换突然停止工作,没有任何错误消息。结果是我关闭了“自动生成”。再次打开它解决了问题。不必设置“自动构建”。在您进行更改之后,“构建”项目非常重要。当您在远程模式下调试应用程序时,您可以修改代码。热插拔并不总是有效的,但是当您在eclipse中运行项目时,它也不总是有效的。这是我在Google上搜索时弹出的第一个答案,我不确定这是怎么发生的,但我的
    自动构建
    确实没有被选中。我一直在琢磨为什么我的断点与我的代码完全不匹配。谢谢你的提示,虽然我没有生成错误(在我的任何(相关)项目中),但取消选中此选项有帮助。。!。。。链接在哪里?链接在这里:。不管怎么说,我不适合:(我有一个用eclipse构建的maven。你如何在那个环境下编写热代码。看