执行后删除自身的jar文件

时间:2017-03-19 23:17:44

标签: java jar

我正在创建一个自我更新的jar文件。

在执行它之后,它会检查一个外部网站并下载一个新的jar,如果它是最新的。这不是问题。

但是,每当下载新jar时,我都需要删除当前正在执行的jar(检测到自身的jar)。为此,我尝试使用File.deleteOnExit(),如下所示:

File currentJar = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
currentJar.deleteOnExit();
System.exit(0);

问题是:退出应用程序后,旧的jar文件仍在那里。

我不想使用bat或sh文件,因为这应该是一个单jar应用程序。

如何创建一个在执行后自行删除的jar文件?

1 个答案:

答案 0 :(得分:0)

Windows无法OS将锁定执行文件,因此您无法在退出时自行删除),Unix OS但是您可以(JVM仅限OS帖子1.6 ...这次是针对类加载器问题,而不是.bat限制。最佳解决方案是使用.shOS脚本,以确保规避任何JVMusing System; using NAudio.Wave; 限制。