我想實現一個Java應用程序(服務器應用程序),該應用程序可以從給定的URL下載新版本(.jar文件),然后在運行時進行自身更新。最好的方法是什么,有可能嗎?我猜該應用程序可以下載一個新的.jar文件并啟動它。但是我應該如何進行切換,例如知道何時啟動新應用程序然后退出。還是有更好的方法來做到這一點?
3 回答

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
我目前正在開發JAVA Linux守護程序,也需要實現自動更新機制。我想將應用程序限制在一個jar文件中,并提出了一個簡單的解決方案:
將更新程序應用程序打包在更新本身中。
應用程序:當應用程序檢測到較新版本時,它將執行以下操作:
下載更新(Zipfile)
提取Application 和ApplicationUpdater(均在zip文件中)
運行更新程序
ApplicationUpdater:運行更新程序時,它將執行以下操作:
停止應用程序(在本例中為通過init.d的守護程序)
復制下載的jar文件以覆蓋當前的應用程序
啟動應用程序
清理。
希望它可以幫助某人。

jeck貓
TA貢獻1909條經驗 獲得超7個贊
我編寫了一個Java應用程序,該程序可以在運行時加載插件并立即開始使用它們,這受到jEdit中類似機制的啟發。jEdit是開源的,因此您可以選擇查看其工作方式。
該解決方案使用自定義的ClassLoader從jar中加載文件。加載它們后,您可以從新的jar中調用某些方法作為其main
方法。然后,棘手的部分是確保您擺脫對舊代碼的所有引用,以便可以對其進行垃圾回收。我在這方面還不是專家,我已經做到了,但這并不容易。
添加回答
舉報
0/150
提交
取消