6

运行某些 build.xml 目标时,清理会在删除 ivy jar 目录时遇到问题。“锁定”文件是由 Eclipse 使用的,在目录上使用资源管理器或从 Eclipse 重新运行 ant 拒绝删除它,直到重新启动 Eclipse。这是非常耗时的。运行 ant build/clean 后,eclipse 保留这些文件的某些原因。
这不是所有的项目,只是在某些时候出于未知的原因。

有这个现有的讨论。 Eclipse 不会删除文件

但它并没有回答我关于如何让 eclipse 运行 ant 而不必每次都重新启动的问题。

有没有办法使用 eclipse -console 查看文件处理的是什么?或者是否有人知道为什么 eclipse/ant/ivy 在构建或两个构建后不会放弃这些目标的根本原因(在 Eclipse 重新启动后的第一次工作正常)但随后的一些后续 ant 构建变得不开心。

在我的情况下,它是确定锁定文件的 Eclipse。重新启动 Eclipse 不是解决方案。否则,我将返回命令行窗口。我试过在同一个 jvm 中设置运行,以及各种设置。

我需要调试eclipse插件吗?有没有更简单的方法来找出 Eclipse 及其插件中没有释放锁的内容?这是我第一次看到这种情况,我怀疑是常春藤引起的。

运行 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..
4

6 回答 6

3

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

于 2013-06-09T17:45:49.663 回答
1

我已经开始在最近的 Eclipse 更新中看到这个问题。事实证明,即使在任务执行之前,ant 插件也会锁定构建文件中引用的所有 jar 文件。为了禁用这个奇怪的“功能”,我做了以下事情,它让问题消失了:

  1. 打开菜单 Window > Preferences > Ant > Editor > Content Assist
  2. 禁用选项为用户定义的任务提供建议
  3. 重启 Eclipse
于 2021-10-12T09:55:08.500 回答
0

从命令行执行下面

c:\path_to_eclipse\eclipse.exe -clean

于 2013-12-27T19:09:52.000 回答
0

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

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

于 2015-04-07T06:47:50.073 回答
0

我也有这个问题。这是由于文件夹的权限被拒绝而引起的。我无法切换文件夹的所有者。解决问题的方法是安装Lockhunter解锁文件夹,删除并重新创建它。

于 2016-11-21T10:10:54.910 回答
0

我要在这里筹码(我知道这是一个旧帖子)

我的 Eclipse/Ant 组合工作正常,但随后我创建了一个新工作区,看起来不错,但在清理期间拒绝删除dist/*jars

我尝试通过声称它们已经在 Eclipse 中打开的 Windows Explorer 删除它们。

Eclipse 重新启动工作但很耗时。

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

我的猜测 - 我原来的工作空间中有一些损坏。

于 2015-11-20T09:31:42.530 回答