我已經創建了一個應用程序,其中基於操作,它修改了jar中的屬性文件。如何刪除正在執行的jar文件
我可以用更新的更改創建一個新的臨時jar。但不能將jar文件重命名爲現有的jar文件名。由於它正在運行,我無法刪除並重命名它。
任何人都可以建議任何操作或建議刪除jar(當前執行)並將temp jar重命名爲該名稱?
我已經做了申請: http://java.net/projects_tags/jeazyprops
我已經創建了一個應用程序,其中基於操作,它修改了jar中的屬性文件。如何刪除正在執行的jar文件
我可以用更新的更改創建一個新的臨時jar。但不能將jar文件重命名爲現有的jar文件名。由於它正在運行,我無法刪除並重命名它。
任何人都可以建議任何操作或建議刪除jar(當前執行)並將temp jar重命名爲該名稱?
我已經做了申請: http://java.net/projects_tags/jeazyprops
可能是你需要編寫自定義的類裝載器(擴展類加載器),它使您可以加載/卸載罐子。如果您可以卸載罐子,您應該可以刪除罐子。
相關鏈接 http://docs.oracle.com/javase/tutorial/deployment/jar/jarclassloader.html
Can I dynamically unload and reload (other versions of the same) JAR?
你的問題是默認ClassLoader
是java的預1.7用途 - 它鎖定任何廣口瓶,它的負載,直到執行完成不釋放罐子。最簡單的解決方案是使用Java 1.7來解決這個問題。否則,您可以編寫自己的自定義ClassLoader
(唉)。默認ClassLoader
:http://docs.oracle.com/javase/6/docs/api/java/net/URLClassLoader.html
編輯
下面是從Oracle說,他們固定它的Java 1.7注:http://openjdk.java.net/projects/jdk7/features/#f584
我沒有看到更換您從內執行的jar的可能性程序。
建議的方法。
使用一個簡單的類創建一個新的jar,只需啓動您的現有應用程序。在啓動之前,它應該檢查temp.jar
是否存在,是否存在刪除原始並將temp.jar
重命名爲原始。在創建temp.jar
之後,在您的應用程序中,使用Runtime.exec
來啓動發射器類並退出。你的應用程序將重新啓動新的jar。
您是否可以更改應用程序以從其他位置加載屬性文件,還是必須在JAR中? – noahlz
我可以在不同位置更改它。沒有問題,但...我不得不擴展我的項目,在jar中的屬性文件... ... – Prabhu