Ant无法删除Windows上的某些文件

时间:2008-09-16 21:40:44

标签: java windows ant build-automation

我有一个构建目录,调用javac和所有常规内容的ant构建。我遇到的问题是,当我尝试清理(删除所有生成的东西)时,删除任务报告无法删除某些文件。当我尝试手动删除它时它工作得很好。这些文件显然没有被任何其他进程打开,但是ant仍然无法删除它们。我该怎么办?

15 个答案:

答案 0 :(得分:13)

我曾经遇到过这个问题。 这是因为我试图删除的文件是另一个任务的类路径的一部分。

答案 1 :(得分:9)

这取决于......

  • Ant进程没有足够的权限来删除文件(通常是因为它们是由不同的用户创建的,可能是系统用户)。尝试使用“运行方式”作为管理用户运行Ant脚本。
  • 当进程死亡或被杀死时,Windows在清理文件锁方面非常糟糕;因此,Windows认为该文件被死亡(或被杀死)的进程锁定。除了重启之外,在这种情况下你无能为力。
  • 获取更好的工具来检查系统状态。我建议下载SysInternals工具并使用它们而不是默认的Windows等效工具。

答案 2 :(得分:5)

使用Ant Retry任务帮助了我。 我刚把它包裹在删除任务中。

答案 3 :(得分:3)

您没有说您的构建是否以当前登录用户身份运行。如果没有,explorer.exe或其他进程具有显示的目录的事实也可能导致它被锁定。但是在同一个explorer.exe进程中删除它会成功。尝试从http://ccollomb.free.fr/unlocker/解锁,看看哪些进程锁定了文件/目录。

答案 4 :(得分:3)

我遇到了同样的问题 我的机器上没有设置任何类路径或防病毒软件 但是,我使用的ANT版本是32位,我安装的JDK是64位 我安装了32位JDK,问题解决了。

答案 5 :(得分:2)

Ant进程是否存在打开文件(或目录)的内容?这会导致您在运行ant后删除它们的情况,但不会在运行期间删除它们。

答案 6 :(得分:2)

1.8.0之前的Ant版本有一个错误,导致删除操作期间出现随机错误。尝试使用Ant 1.8.0或更新版本。

您可以在此处查看错误详情https://issues.apache.org/bugzilla/show_bug.cgi?id=45960

答案 7 :(得分:1)

在我的情况下,我的ant clean从Eclipse失败,无法删除构建文件。我不时看到这个。通常会重复尝试。这次没有。 尝试从命令行运行ant clean,失败无法删除"无法删除"。 它一定是Eclipse持有问题文件,当我退出Eclipse时,cmd行能够删除OK。

答案 8 :(得分:0)

我最近经常遇到这个问题并且它是随机的。有一次它工作,下次它不起作用。我正在使用NetBeans(如果重要的话),我已经为build.xml添加了许多额外的任务。我在-post-jar任务中遇到了这个问题。当我在文件上调用unjar然后删除时会发生这种情况。我怀疑NB正在尝试扫描罐子,这会导致锁定。

对我来说有用的是立即在-post-jar的开头重命名jar并为其添加.tmp扩展名。然后我在临时文件上调用unjar。当我完成后,我将重命名为所需的jar名称。

答案 9 :(得分:0)

我也有同样的问题,并尝试手动删除构建目录。最后,我通过将项目的.jar工件重命名为与项目名称本身不同的名称来解决它。例如:我的项目是门户网站,我的ant构建脚本用于生成portal.jar,其中eclipse ant无法删除此portal.jar。当我更改build.xml以生成我的.jar作为portalnew.jar时,eclipse下次可以删除此portalnew.jar。希望这会有所帮助。

答案 10 :(得分:0)

您需要在Windows中手动删除它。它对我有用。 (通常要删除的文件是jar的旧版本。例如:如果存在httpcore.4.2.5.ja5r和httpcore.4.3.jar,则会尝试删除4.2.5.jar)

答案 11 :(得分:0)

我遇到了这个问题,因为蚂蚁试图删除的文件被其他一些服务/进程使用。 我停止了服务,然后蚂蚁构建脚本确实运行了。

答案 12 :(得分:0)

就我而言,我从任务管理器停止运行Java进程并重新运行Ant构建文件。该文件能够删除并构建成功。

答案 13 :(得分:0)

自从我切换到Microsoft Windows 10以来,我经常会遇到这种问题,

<rename src="file.name" dest="file.name.old"/>
<delete file="file.name.old" />

答案 14 :(得分:0)

如果您已安装git
在git bash shell中打开目录(从头开始搜索git bash)。
然后键入bash命令以删除文件 就像

rm -r filename.xyz