2012-10-05 93 views
3

我已經創建了一個應用程序,其中基於操作,它修改了jar中的屬性文件。如何刪除正在執行的jar文件

我可以用更新的更改創建一個新的臨時jar。但不能將jar文件重命名爲現有的jar文件名。由於它正在運行,我無法刪除並重命名它。

任何人都可以建議任何操作或建議刪除jar(當前執行)並將temp jar重命名爲該名稱?

我已經做了申請: http://java.net/projects_tags/jeazyprops

+0

您是否可以更改應用程序以從其他位置加載屬性文件,還是必須在JAR中? – noahlz

+0

我可以在不同位置更改它。沒有問題,但...我不得不擴展我的項目,在jar中的屬性文件... ... – Prabhu

回答

3

你的問題是默認ClassLoader是java的預1.7用途 - 它鎖定任何廣口瓶,它的負載,直到執行完成不釋放罐子。最簡單的解決方案是使用Java 1.7來解決這個問題。否則,您可以編寫自己的自定義ClassLoader(唉)。默認ClassLoaderhttp://docs.oracle.com/javase/6/docs/api/java/net/URLClassLoader.html

編輯

下面是從Oracle說,他們固定它的Java 1.7注:http://openjdk.java.net/projects/jdk7/features/#f584

1

我沒有看到更換您從內執行的jar的可能性程序。
建議的方法。
使用一個簡單的類創建一個新的jar,只需啓動您的現有應用程序。在啓動之前,它應該檢查temp.jar是否存在,是否存在刪除原始並將temp.jar重命名爲原始。在創建temp.jar之後,在您的應用程序中,使用Runtime.exec來啓動發射器類並退出。你的應用程序將重新啓動新的jar。