gpt4 book ai didi

java - JAR 文件如何 self 删除?

转载 作者:可可西里 更新时间:2023-11-01 10:03:04 24 4
gpt4 key购买 nike

我需要一个 JAR 文件来删除自身。

问题是Windows在运行时锁定了JAR文件,无法直接删除自身。

我研究了批处理脚本可以终止 JAR 进程然后删除文件的解决方案,但是

  • System.exit(0) 是不需要的,因为它不能通过 Batch 文件运行。
  • taskkill/F/IM "java.exe" 是不需要的,因为它会杀死 ALL Java 进程。
  • jps无法使用because it is only available in the JDK并且用户可能会运行 JRE,这样会失败。

我一直在寻找一种解决方案,它可以让我使用 Java 代码找到当前 JARPID,然后写出Batch 命令并插入终止进程的 PID,例如像下面这样:

printWriter.println("taskkill /PID " + currentJARPID);

如果您想知道这是做什么用的,可以查看 this回答。

最佳答案

这是一个工作示例

public class Delete
{
public static void main(String[] args) throws Throwable
{
System.out.println("Running");

System.out.println("Deleting");
Runtime.getRuntime().exec("cmd /c ping localhost -n 6 > nul && del Delete.jar");

System.out.println("Ending");
System.exit(0);
}
}

支持此功能的主要功能是 cmd/c ping localhost -n 6 > nul && del Delete.jar

删除waiting 5 seconds之后的jar文件

为了测试,我使用 javac Delete.java && jar cfe Delete.jar Delete Delete.class 构建 jar,并使用 java -jar Delete.jar 运行

我还通过 new File("Delete.jar").delete(); 并使用 Windows 资源管理器验证了我无法在执行时删除 jar 文件

关于java - JAR 文件如何 self 删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47017755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com