JAR 文件如何自我删除?

How Can a JAR File Delete Itself?

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

问题是 Windows 在 运行ning 时锁定了 JAR 文件,不能直接删除它自己。

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


我一直在寻找一个解决方案,让我使用 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 Explorer

验证了我无法在执行时删除 jar 文件