eclipse ant build failed无法删除文件lib \ build

时间:2013-06-05 16:42:18

标签: eclipse ant ivy

当运行某些build.xml目标时,clean会删除ivy jar目录。 “锁定”文件是eclipse,在目录上使用资源管理器或从eclipse重新运行ant拒绝删除它直到重新启动eclipse。这非常耗时。 运行ant build / clean之后eclipse正在坚持这个文件的原因 这不是所有的项目,只是在某些时候出于不明原因。

现有讨论。 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生成Ant Build,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>

错误:

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..

5 个答案:

答案 0 :(得分:3)

当进程使用所述文件时会发生这种情况。我通常在使用所述jar的程序仍在运行时发生此问题。验证您是否仍在eclipse中运行程序。从视觉上看这个最简单的方法是看到这个:

enter image description here

启用红色方块(停止按钮)意味着您的程序仍在运行。如果你按下那个,你就会停止你的过程。但是,如果你的程序没有运行,它看起来像这样:

enter image description here

由于未启用“停止”按钮,表示程序未运行。但是,除了当时显示的进程外,还有其他进程可能正在运行。要看到这一点,您可以在下一个屏幕截图中看到“计算机屏幕”图标:

enter image description here

启用该计算机屏幕表示您已运行多个程序/进程。单击向下箭头可以更改为其他程序。检查它们是否正在运行,并停止它们。更简单的方法是按下双X的符号。这将关闭与完成的流程相关的每个部分,并可能显示一个仍在运行的部分,您可以停止。继续按下双x和停止按钮直到完全消失,你应该能够删除你的jar,并且没有问题。

答案 1 :(得分:0)

从命令行执行以下

  

c:\ path_to_eclipse \ eclipse.exe -clean

答案 2 :(得分:0)

这似乎是ant插件的一个问题。在我的例子中,当插件解析build.xml文件时,它会打开我的taskdef元素的类路径中提到的所有jar文件句柄。一旦某个动作导致ant插件解析build.xml文件,它就会获取这些jar的文件句柄,并且在eclipse关闭之前不会释放它们。我认为这是ant插件中的一个错误 - 它应该只在目标运行时保存打开的文件句柄。

除了恢复命令行使用ant而不是eclipse插件之外,我没有找到解决此问题的方法。可以重新构建整个构建以将这些jar的副本放在别处并更新taskdef目标,但这是一个严重的黑客攻击。使用mac或linux的团队成员不会看到这一点,因为那些允许您删除具有打开文件句柄的文件。可以在其他地方辩论其优点。

答案 3 :(得分:0)

我要去这里筹码(我知道这是一个老帖子)

我的Eclipse / Ant组合工作正常,但后来我创建了一个看起来不错的新工作区,但拒绝在清理过程中删除Collectors.toList()

我尝试通过Windows资源管理器删除它们,声称它们已经在Eclipse中打开了。

Eclipse重启工作但很耗时。

我的解决方案 - 我创建了一个新工作区并将项目重新导入其中。

我猜 - 我原来的工作区内有些腐败。

答案 4 :(得分:0)

我也有这个问题。这是因为文件夹被拒绝了。我无法切换文件夹的所有者。解决问题的方法是安装Lockhunter解锁文件夹,删除并重新创建文件夹。