[英]How to delete a executing jar file
我創建了一個應用程序,在其中基於操作,它修改jar中的屬性文件。
我能夠使用更新的更改創建一個新的臨時jar。 但是無法將jar文件重命名為現有的jar文件名。 由於它正在運行,我無法刪除並重命名它。
任何人都可以建議刪除jar(當前正在執行)的任何操作或建議,並將temp jar重命名為該名稱嗎?
我已經為應用程序做了: http : //java.net/projects_tags/jeazyprops
您遇到的問題是java 1.7之前使用的默認ClassLoader
- 它會鎖定它加載的任何jar,並且在執行完成之前不會釋放jar。 最簡單的解決方案是使用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
可能你需要編寫一個自定義類加載器(擴展ClassLoader),它允許你加載/卸載jar。 如果你可以卸載jar,你應該能夠刪除jar。
有用的鏈接http://docs.oracle.com/javase/tutorial/deployment/jar/jarclassloader.html
我沒有看到在程序中替換正在執行的jar的可能性。
建議的方法。
使用只啟動現有應用程序的簡單類創建一個新jar。 在啟動之前,它應該檢查temp.jar
存在以及是否存在delete original並將temp.jar
重命名為original。 在創建temp.jar
后的應用程序中,使用Runtime.exec
啟動launcher類並退出。 您的應用將使用新jar啟動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.