首页 > 解决方案 > 在 Java 程序中运行可执行 JAR 后如何删除它?

问题描述

我正在使用 Java 程序从私人在线数据库下载 JAR,然后使用以下代码运行它们:

ProcessBuilder pb = new ProcessBuilder(commands);
File jarFile = new File(JAR_DIR);
pb.directory(jarFile);
Process proc = pb.start();

JAR 使用它运行良好,但我想在使用后删除每个 JAR,因为它们有很多,而且继续下载它们需要太多空间。

我一直在打印出 JAR 中的每一行,然后等待它关闭(我也尝试在等待它关闭后销毁该进程):

BufferedReader r = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line;
while(line = r.readLine()) != null)
    System.out.println(line);
proc.waitFor();

然后我使用org.apache.commons.io.FileUtils中的方法删除 JAR 所在的文件夹:

FileUtils.deleteDirectory(new File(jarDirectory));

但是,这会引发异常,说明无法删除 JAR 文件。

我认为在删除它之前我需要从 JVM 中删除 JAR 的路径,但我还没有找到任何关于如何在另一个 Java 程序中执行此操作的信息。

标签: javaexecutable-jardelete-file

解决方案


推荐阅读