2013-06-05 134 views
4

運行某些build.xml目標時,clean在刪除ivy jar目錄時遇到了點擊或錯過。 「鎖定」文件是通過eclipse,在目錄上使用瀏覽器或從eclipse重新運行ant拒絕刪除它直到重新啓動eclipse。這非常耗時。 運行ant build/clean後,eclipse在這些文件中保留的一些原因。
這不是所有的項目,只是在某些時候,原因不明。eclipse ant編譯失敗無法刪除文件lib build

有這個現有的討論。 Eclipse won't delete files

但它並沒有回答我的問題如何讓eclipse運行ant而不必每次都重新啓動。

有沒有一種方法可以使用eclipse -console來查看文件處理的內容?或者是否有人知道爲什麼eclipse/ant/ivy在構建或兩個版本之後不會放開這些目標(第一次在Eclipse重新啓動後第一次可以正常工作)的根本原因,但是之後一些後續的ant構建會變得不快樂。

就我而言,它是eclipse,它確實鎖定了文件。 重新啓動Eclipse不是解決方案。否則,我會回到命令行窗口。我試着在同一個jvm中設置運行,以及各種設置。

我需要調試eclipse插件嗎?有沒有更簡單的方法來找出什麼不釋放Eclipse中的鎖,它是插件?這是我第一次見到這個,我懷疑這是IVY造成的。

正在運行juno,ivy,spring,ant並且運行時出現問題 - 從Eclipse構建Eclipse時,clean無法刪除工件的lib/build目錄。

eclipse.buildId=M20130204-1200 
java.version=1.6.0_43 
java.vendor=Sun Microsystems Inc. 
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US 
Framework arguments: -product org.eclipse.epp.package.jee.product 
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product 

!ENTRY org.apache.ivyde.eclipse 1 0 2013-06-04 11:36:50.344 
!MESSAGE starting IvyDE plugin 

螞蟻目標:

<target name="clean-retrieved" > 
    <delete includeemptydirs="true" > 
      <fileset dir="${basedir}"> 
       <include name="lib/**" /> 
      </fileset> 
    </delete> 
</target> 

ERROR:

clean-retrieved: 

BUILD FAILED 
C:\scripts\common-build-targets.xml:238: Unable to delete file C:\scripts\lib\build\annotations-1.3.8.jar <<just first jar file in directory.. 
+0

Windows?如果有任何文件在目錄中打開,將會拒絕刪除。操作系統級錯誤。 –

+0

這不是一個錯誤。這是一條消息,文件被鎖定。 Eclipse-ant鎖定文件,除非重新啓動eclipse,否則不會釋放鎖定。我認爲這是eclipse ant插件中的一個錯誤或「錯誤」,它似乎與ivy依賴管理器相關聯,因爲在ivy集成之前我從未見過這種情況。 – ken

+0

更可能是操作系統問題,當然這是我的經驗。你有什麼機會在你的ivy設置文件中使用鎖定策略?很少需要,也不太可能成爲根病例:http://ant.apache.org/ivy/history/latest-milestone/settings/lock-strategies.html –

回答

3

當一個進程使用所述文件時發生。我通常在使用上述jar的程序仍在運行時發生了這個問題。確認你還沒有在eclipse中運行你的程序。看到直觀最簡單的方法就是看這個:

enter image description here

那紅色方塊(停止按鈕)使能是你的程序仍在運行。如果你按下,你會停止你的過程。然而,如果你的程序沒有運行它會是這個樣子:

enter image description here

由於「停止」按鈕未啓用,這意味着程序不運行。但是,有可能還有其他進程正在運行,而不是當時顯示的進程。一看就知道,你可以看到這下面的截圖是「電腦屏幕」圖標:

enter image description here

這被啓用電腦屏幕,你已經跑多個程序/進程表示。點擊向下箭頭可以切換到其他程序。檢查這些是否正在運行,並停止這些。更簡單的方法是按下雙X的符號。這將關閉與完成的流程相關的每個部分,並可能會顯示一個仍在運行的部分,以便您可以停止。繼續按下雙x和停止按鈕,直到全部消失,並且您應該能夠刪除您的jar,並且無問題地構建。

+0

這個很好的信息和有據可查的文件,但螞蟻進程任務完成。雙XX也不起作用。如果ant構建由於其他原因而失敗,那麼jar文件仍然被鎖定。因此,我認爲這是eclipse ant模塊,它並沒有很好地處理異常,並且在螞蟻插件方面存在缺陷。在2004年左右的古代,ant-eclipse bug跟蹤器顯示了類似這樣的內容... https://bugs.eclipse.org/bugs/show_bug.cgi?id = 64713 所以它是類似的問題模式,它看起來像taskdef被引用的基準問題。解決方法可能會更改ant腳本(唉。) – ken

+0

常識:當進程使用所述文件時會發生這種情況。謝謝!! – xploreraj

0

從命令行

c:\path_to_eclipse\eclipse.exe -clean

0

這似乎是與螞蟻插件的一個問題下面執行。在我的情況下,當插件解析build.xml文件時,它會打開文件句柄給我的taskdef元素的類路徑中提到的所有jar文件。只要一個動作導致ant插件解析build.xml文件,它就會獲取這些jar文件的句柄,並在eclipse關閉之前不會釋放它們。我認爲這是螞蟻插件中的一個錯誤 - 它應該只在運行目標時保存打開的文件句柄。

我發現沒有解決這個問題的辦法,除了恢復到螞蟻的命令行使用而不是eclipse插件。整個構建可以進行重組,以將其他地方的這些jar副本複製並更新taskdef目標,但這是一個嚴重的黑客攻擊。團隊中使用mac或linux的人不會看到這些,因爲這些人允許您刪除具有打開文件句柄的文件。可以辯論其他地方的優點。

0

我要在這裏湊錢(我知道這是一個老帖子)

我的Eclipse /螞蟻組合工作正常,但後來我創建了看起來OK了新的工作,但拒絕以除去在dist/*jars一個乾淨的。

我試圖通過Windows資源管理器刪除它們,聲稱它們已經在Eclipse中打開。

Eclipse重新啓動但很耗時。

我的解決方案 - 我創建了一個新的工作區,並重新導入了我的項目。

我的猜測 - 我的原始工作區內發生了一些腐敗。

0

我也有這個問題。這是由於文件夾被拒絕的權限而導致的。我無法切換文件夾的所有者。解決問題的方法是安裝Lockhunter解鎖文件夾,刪除並重新創建它。