2014-07-23 23 views
0

我正在调试通过Arquillian部署在JBoss 7 AS上的代码的JUnit测试。 调试器停止在断点处,但执行旧版本的代码(例如,它通过空行),同时在屏幕上看到新版本。Eclipse调试器没有看到代码中的更改

我找到了this question:我删除了旧的远程调试配置并创建了一个新的,删除了默认的源代码并附加了新的(Source --> Add --> Java Project,并选择了我的项目)。这并没有解决我的问题。

This answer建议清理项目。我的项目由maven管理,所以我从控制台运行mvn clean install。这没有帮助。

由于JBoss由Arquillian启动,如果我打开了自动发布(Window --> Preferences --> Server --> Launching),但我认为它不重要,但无论如何它都会打开。

我现在经常遇到这个问题,在看似随机的时刻 - 我一遍又一遍地运行相同的(工作)远程调试配置,突然间我遇到了这个问题,即使我没有改变源代码在调试配置中。

这个问题的原因是什么?解决问题的最快方法是什么?

+0

你是什么意思的旧版本的代码?从你期待的新版本开始,你是在eclipse中还是从Eclipse之外更改代码? 您可以尝试插入任何空格/ new_line并再次保存代码。它会在调试模式下在服务器上部署新版本。 – Neeraj

+0

@Neeraj,我只在Eclipse中编辑了我的代码。插入新行并保存文件后,该更改未在服务器上部署。新的代码行不被执行。 –

+0

我希望“自动构建”选项为ON。如果你从命令行构建项目,那么它不会反映eclipse中的变化。从命令构建项目与eclipse中的构建项目完全不同。 我的建议是在eclipse中建立项目,如果你希望你的改变应该在调试模式下发布在服务器上。 – Neeraj

回答

1

这个问题是由JBoss读取其配置文件中的旧部署信息引起的。我用下面的行动,以强制重新部署:

  1. 转到JBOSS_HOME/standalone/configuration
  2. 编辑standalone.arquillian.xml
  3. 删除部署的信息(靠近文件末尾)。请参阅this answer
  4. (可选)从旧部署中删除数据 - 在JBOSS_HOME/standalone文件夹temp,datalogs可以安全地删除。请参阅this answer

我仍然不确定是什么导致xml保留旧的部署信息,如果这可以避免。