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

问题描述 投票:16回答:15

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

java windows ant build-automation
15个回答
13
投票

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


0
投票

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


0
投票

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


0
投票

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


0
投票

在我的例子中,我停止从任务管理器运行Java进程并重新运行Ant构建文件。该文件能够删除和构建成功。


0
投票

自从我切换到Microsoft Windows 10后,我经常看到这种方式的问题。在删除文件之前立即重命名文件为我解决了这个问题:

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

0
投票

如果你安装了git 在git bash shell中打开目录(在开始时搜索git bash)。 然后键入bash命令以删除文件

rm -r filename.xyz

9
投票

这取决于 ...

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

5
投票

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


3
投票

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


3
投票

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


2
投票

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


2
投票

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

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


1
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.