我正在创建一个自我更新的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文件?
答案 0 :(得分:0)
Windows
无法OS
将锁定执行文件,因此您无法在退出时自行删除),Unix
OS
但是您可以(JVM
仅限OS
帖子1.6 ...这次是针对类加载器问题,而不是.bat
限制。最佳解决方案是使用.sh
或OS
脚本,以确保规避任何JVM
或using System;
using NAudio.Wave;
限制。