2012-03-08 43 views
4

我正在使用Ubuntu 11.10中的Eclipse Indigo Java EE(大量使用m2eclipse)进行WAR叠加工作,这是一个相当复杂的项目(Java/Spring/Maven多模块)/64Eclipse WTP/m2eclipse - 既不能清理也不能发布到tomcat

都好,直到今天早上我能不干净/发布到Tomcat了:

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

我可以很容易地通过手工删除这些文件(但仍tomcat的不能发布),我不能找出哪些进程可能会锁定它(linux:lsof <directory>

我在Eclipse中尝试了一个sh..load的东西:删除了项目(然后工作),再次添加(相同问题),删除服务器配置,删除tomcat配置,更新eclipse,启动eclipse与 - 清洁,移动服务器目录出插件文件夹,回滚项目到一个肯定有用的分支...

至于说:一切都很好,直到昨天。我发现这个问题here,最近有人遇到同样的问题。谷歌搜索并没有透露太多。有些人有类似的问题,他们通过大量删除/重新创建服务器配置来“解决”问题。试过至少10次。

同一问题在一个同事的Linux机器上 - 他昨天建立了自己的系统,马上跑进它。

我找到this可能与m2e-wtp有关的错误报告。

更新:我敢肯定它的战争叠加的组合和WTP此版本的Maven集成:0.15.1.20120208-1300 真要降级到0.14 ...

+0

你没有做任何Eclipse更新是吗? – dimitrisli 2012-03-08 09:50:59

+0

当问题发生时:没有。在我尝试修复它时:是的 – 2012-03-08 09:59:46

回答

2

我看不出有什么解决方案简单您可以尝试:

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

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

这就是说:我已经放弃了对Tomcat和WAR的部署。它太慢而且容易出错。对于我的所有项目,我使用内嵌的Jetty服务器,这是我在Eclipse中运行的。理由:

  • Jetty服务器获得与编译器相同的类路径。没有必要浪费我的时间来复制东西。
  • 它启动更快(码头:5秒,与Tomcat的部署:45S)
  • Jetty服务器是一个正常的Java应用程序,所以我不必设置远程调试
  • 我可以运行在同一台服务器从单元测试
  • 我可以配置码头时,应重新启动
  • 没有使用XML配置文件
+1

感谢您的帮助。实际上我正在寻找来源,但这当然不是一件容易的事情(至少不是我)。我们花了很多时间才发现哪个插件导致了问题... – 2012-03-08 16:03:47

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.