2012-03-08 71 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.