23

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

4

15 回答 15

15

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

于 2008-09-17T08:47:56.063 回答
9

这取决于 ...

  • Ant 进程没有足够的权限来删除文件(通常是因为它们是由不同的用户创建的,可能是系统用户)。尝试使用 Run As 以管理用户身份运行 Ant 脚本。
  • 当进程死亡或被杀死时,Windows 在清理文件锁方面真的很糟糕;因此,Windows 认为文件被一个已死(或被杀死)的进程锁定。在这种情况下,除了重新启动之外,您无能为力。
  • 获得更好的工具来检查您的系统状态。我建议下载SysInternals工具并使用它们而不是默认的 Windows 等效工具。
于 2008-09-16T21:50:42.773 回答
5

使用 Ant Retry 任务对我有帮助。我刚刚将它包裹在删除任务周围。

于 2012-08-20T06:16:11.973 回答
3

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

于 2008-09-16T21:45:52.970 回答
3

Ant 进程中是否存在保持文件(或目录)打开的内容?这将导致您可以在运行 ant 后删除它们,但不能在运行期间删除它们。

于 2008-09-16T21:47:11.643 回答
3

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

于 2014-05-28T10:50:05.907 回答
2

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

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

于 2012-03-05T12:47:22.433 回答
1

就我而言,我的 ant clean 从 Eclipse 失败,无法删除构建文件。我不时看到这个。通常在重复尝试时会成功。这次没有。尝试从命令行运行 ant clean,失败无法删除“无法删除”。一定是 Eclipse 保留了问题文件,当我退出 Eclipse 时,cmd 行能够删除 OK。

于 2014-09-03T10:50:42.047 回答
0

我最近经常遇到这个问题,而且是随机的。一次有效,下一次无效。我正在使用 NetBeans(以防万一),并且在 build.xml 中添加了许多额外的任务。我在 -post-jar 任务中遇到了这个问题。当我在文件上调用 unjar 然后删除时会发生这种情况。我怀疑 NB 正在尝试扫描 jar,这会导致它被锁定。

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

于 2013-06-27T19:33:03.840 回答
0

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

于 2013-07-16T11:50:21.030 回答
0

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

于 2014-12-02T09:34:11.093 回答
0

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

于 2017-07-26T06:41:31.057 回答
0

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

于 2018-03-09T11:11:34.793 回答
0

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

<rename src="file.name" dest="file.name.old"/>
<delete file="file.name.old" />
于 2018-11-07T11:04:13.617 回答
0

对我来说,我使用的是 mac,所以我在 ant cmd 之前尝试了 sudo,sudo ant clean all它确实工作得很好。

正如我所读到的,javac 将无权删除 JAR 文件,因此您可以使用 sudo 或找到替代方法。

于 2021-10-04T05:46:45.237 回答