簡體   English   中英

如何刪除正在執行的jar文件

[英]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 (呃)。 默認ClassLoaderhttp//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的可能性。
建議的方法。
使用只啟動現有應用程序的簡單類創建一個新jar。 在啟動之前,它應該檢查temp.jar存在以及是否存在delete original並將temp.jar重命名為original。 在創建temp.jar后的應用程序中,使用Runtime.exec啟動launcher類並退出。 您的應用將使用新jar啟動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM