我正在構建一個更新系統,我需要能夠在運行時替換正在運行的應用程序jar的引用jar。但是,當我嘗試在jar上執行文件實用程序函數(例如'setLastModified')時,我遇到了Windows上的文件鎖定問題。在運行時交換運行的jar
一些谷歌上搜索,我發現這個片段後...
我在研究中發現,那是什麼 標準的ClassLoader 實施從未關閉一個jar文件 一旦被打開。它也 只根據需要從jar文件 加載資源。因此在任何特定時間, 可能存在尚未加載到內存中的jar文件 中的類。 顯然,如果您從ClassLoader下刪除了jar文件 ,並且它 試圖在 缺少的文件中查找資源,那麼至少會得到一個012xxIOException。
有沒有人有任何提及這方面的信息或解決此問題?
謝謝。
你需要重新發明輪子嗎? OSGi已經有了熱門的部署。看一看,看看你是否可以用它來代替。 – SteveD 2010-09-01 19:41:27
OSGi聽起來像絕大多數要求壓倒一切,看看這個答案http://stackoverflow.com/a/2463978/320594 – 2014-03-08 09:20:28
重新閱讀後,似乎你想保持你的應用程序運行,但與新的罐子......所以OSGi真的看起來像一個很好的解決方案:),例如Eclipse允許(插件在運行時重新加載)並使用OSGi(只要我知道)。 – 2014-03-08 09:23:31