我有一個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