java - 在 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 程序中执行此操作的信息。
解决方案
推荐阅读
- java - 如果分数和等于1,如何写?
- javascript - 角度 rxjs 管道从数组中删除元素
- gitlab - 当由 gitlab webhook 调用时,jenkins 管道中的 git 分支名称是什么
- php - 如何将多维数组转换为一维数组
- php - 选择发送到 php 时的 twitter 预输入
- pyspark - 将 DF 列转换为列表时出现 PySpark 错误
- neo4j - Neo4j:查找连接到多个类型 2 的 A 类型节点的网络
- c# - 如何将时间戳转换为日期时间?
- c++ - 区分非成员函数和头文件中的成员函数
- python - Python导入一个模块,收到系统找不到指定路径的错误