Eclipse WTP / m2eclipse - 无法清理或发布到Tomcat。

4

我正在处理一个相当复杂的项目(Java / Spring / Maven多模块),在Ubuntu 11.10 / 64位上使用Eclipse Indigo Java EE(大量使用m2eclipse)和WAR叠加。

一切都很好,直到今天早上:我无法再清理/发布到Tomcat了:

Publishing failed
Could not delete <directory> May be locked by another process.

我可以手动轻松删除这些文件(但仍然无法发布tomcat),我找不到可能锁定它的进程(linux:lsof <directory>)。
我在Eclipse中尝试了很多事情:删除项目(然后运行正常),再次添加(同样的问题),删除服务器配置,删除tomcat配置,更新eclipse,以-clean启动eclipse,将服务器目录移出插件文件夹,将项目回滚到一天前肯定能工作的分支...
就像我说的,一切都很好,直到昨天。我发现这里有人最近遇到了同样的问题。Google搜索并未发现太多。一些人遇到了类似的问题,通过大量删除/重新创建服务器配置来“解决”问题。我至少尝试了10次。
同事的Linux box上也出现了相同的问题-他昨天设置了系统并立即遇到了这个问题。
我发现这个 m2e-wtp 的 bug 报告可能相关。 更新:我确定这是WAR叠加和Maven Integration for WTP的构建版本0.15.1.20120208-1300的组合。实际上,我试图将其降级到0.14...

你没有进行任何 Eclipse 更新,对吧? - dimitrisli
当问题最初出现时:否。在我尝试修复它的过程中:是。 - Jan Groth
3个回答

5

2

我看不到简单的解决方案。您可以尝试以下方法:

创建一个Eclipse启动配置,以便您可以从Eclipse本身调试。查看WTP的源代码,找出错误消息来自哪里,并设置断点。

获取插件的副本并更改代码,以在无法删除文件时列出目录中的文件。我的直觉是某些进程(例如从m2e复制的资源)正在将文件复制到目录中,而其他插件则尝试重新部署。

话虽如此:我已放弃Tomcat和WAR部署。它太慢且容易出错。对于我所有的项目,我使用嵌入式Jetty服务器,我从Eclipse中运行它。原因:

  • Jetty服务器获得与编译器相同的类路径。没有必要浪费时间复制东西。
  • 它启动速度更快(Jetty:5秒,带部署的Tomcat:45秒)
  • Jetty服务器是普通的Java应用程序,因此我不必设置远程调试
  • 我可以从单元测试中运行相同的服务器
  • 我可以配置Jetty何时重新启动
  • 不要烦恼XML配置文件

1
谢谢你的帮助。我本来打算搜索源代码,但这绝对不是一件容易的事情(至少对我来说不是)。我们花了很长时间才找出是哪个插件引起了问题... - Jan Groth

0

这对我有用:

1. go to server tab. 
2. Double click on tomcat server.
3. in the tomcat config window check server modules without publishing
4. start the server. (this will replace your project deployed in tomcat)
5. stop the server.
6. in the tomcat config window Uncheck server modules without publishing.
7. start the server.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接