我有一个Java应用程序,它应该通过在线下载新版本来自我更新,然后它应该自我删除,我已经管理了更新,现在我需要删除旧的jar文件。 因为我的应用程序将只在Windows上运行,所以我可以使用bat文件,所以我编写了用于创建应该关闭JVM的批处理文件的代码(因此jar文件不会被锁定),那么它应该删除jar文件,然后它应该删除bat文件(bat文件应该能够自我删除)。 的代码是这样的:自我从Windows批处理文件中删除jar
String pat = new File("delete.bat").getAbsolutePath();
FileWriter fw = new FileWriter(pat);
PrintWriter pw = new PrintWriter(fw);
pw.println("taskkill /F /IM \"java.exe\"");
pw.println("DEL /F \""+ jarname +"\"");
pw.println("DEL /F \"delete.bat\"");
pw.close();
System.out.println("cmd /c START \"\" \"" + pat + "\"");
Runtime.getRuntime().exec("cmd /c START \"\" \"" + pat + "\"");
那实际工作不是太糟糕了,它删除罐子和蝙蝠,但...删除仍有命令提示符打开后,这是十分可怕的,看看:/ 我甚至在DEL/F“delete.bat”之后尝试退出,但由于蝙蝠已被删除,因此无法读取退出命令... 关于如何使提示关闭的一些想法?
为什么不从Java代码中删除jar?比你想要做的更清洁(和多平台)解决方案。 – Kayaman