【问题标题】:Hot code swap is not working, why?热代码交换不起作用,为什么?
【发布时间】:2016-04-17 21:35:39
【问题描述】:

当我尝试编写一个简单的一类控制台应用程序时 - 没有问题。我可以在调试时更改方法中的代码。

问题在于我在 Jetty 上的网络应用程序。它不起作用,也不是在通常的调试模式下(在 Eclipse 中按下调试按钮),也不是在here 描述的远程调试模式下。我可以调试但不能更改甚至通常的非静态方法,例如添加 sysout,我的意思是我可以更改它,但保存后它没有更新,它的工作方式与以前相同。

另外,我和我的同事谈过,它适用于他们,但他们使用 Spring Tool Suite 版本的 eclipse,我尝试并得出结论,它可以在通常调试模式下开箱即用的最新版本 STS 中运行,但不能在最新版本的 Eclipse 中工作。

可能是什么原因?

【问题讨论】:

  • 你的Build Automatically 选项打开了吗?
  • 您最近升级了 Eclipse 吗?曾经发生在我身上,我已经升级并重新使用了旧的工作区和旧的.metadata,并且调试器的行为非常随机。 尝试在干净的工作区中运行项目!
  • @Pavel Horal 那件特别的事情没有用,但它让我尝试使用 maven 插件“mvn eclipse:clean”-“mvn eclipse:eclipse”重新制作 eclipse 文件并且它起作用了。谢谢,你可以把它写成我会接受的答案。
  • Maven Eclipse 插件 (mvn eclipse:*) 已过时...我建议您切换到 m2e (这是 Eclipse 插件而不是 Maven 插件)。它会让您的生活更轻松。

标签: java eclipse hotswap


【解决方案1】:

根据我对问题的 cmets 回答(按照 OP 的建议):

当您的工作区或项目元数据损坏时,可能会发生奇怪的 Eclipse 行为。例如,当您升级 Eclipse 版本并使用旧版本创建的工作区时,可能会发生这种情况。

您应该尝试重新创建工作区并设置新的项目签出。如果问题消失,您就知道工作区元数据中有问题。

【讨论】:

  • 您基本上是在做出一般性的答复“如果它坏了,它将无法工作”。你没有证据证明这里是这种情况,所以这不是一个实际的答案。
  • @Gimby 我根据我的 cmets 和 OP 的建议写了这个答案。请删除反对票。谢谢。
  • 我已经给了你足够的理由让我投反对票,如果其他人不同意我的观点,他们可以再次投赞成票。你的答案不是答案。
  • OP 遇到热插拔问题,应该可以。元数据损坏时,Eclipse 的行为不正确。 OP 说,重新创建该项目有帮助。所以我看不出这不是一个正确的答案,即使我无法查明确切的原因。至少我不是建议商业产品只是解决配置问题;)。
  • 虽然我没有创建另一个工作区,我只是运行了“mvn eclipse:clean”-“mvn eclipse:eclipse”
【解决方案2】:

您必须使用热交换代理来交换 EE 容器中的类,例如 jRebel。 看看吧。

【讨论】:

  • Hot Swap 不需要 jRebel。应用程序在服务器上运行的事实是无关紧要的。
  • @PavelHoral 当我在 JBoss 担任 Java EE 开发人员时,这对我来说从来都不是无关紧要的......你确定我们在谈论同样的事情吗? Hot Swap != Hot Redeploy
  • 它不是免费的,是吗?这是开箱即用的功能,我希望首先尝试使用它
  • 是的,它不是免费的。有(或有)一些免费的替代品,但是我们在工作中使用它时遇到了一些麻烦,我们还是选择了 jRebel。如果你愿意,你肯定会评估它。
  • JVM 调试器功能更准确。如果您不以调试模式启动 JVM(这在 eclipse 的上下文中意味着以调试模式启动 JEE 容器),则它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 2014-09-16
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多