为了账号安全,请及时绑定邮箱和手机立即绑定

如何编写可以在运行时进行自我更新的Java应用程序?

如何编写可以在运行时进行自我更新的Java应用程序?

海绵宝宝撒 2019-10-06 11:10:52
我想实现一个Java应用程序(服务器应用程序),该应用程序可以从给定的URL下载新版本(.jar文件),然后在运行时进行自身更新。最好的方法是什么,有可能吗?我猜该应用程序可以下载一个新的.jar文件并启动它。但是我应该如何进行切换,例如知道何时启动新应用程序然后退出。还是有更好的方法来做到这一点?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

我目前正在开发JAVA Linux守护程序,也需要实现自动更新机制。我想将应用程序限制在一个jar文件中,并提出了一个简单的解决方案:

将更新程序应用程序打包在更新本身中。

应用程序:当应用程序检测到较新版本时,它将执行以下操作:

  1. 下载更新(Zipfile)

  2. 提取Application 和ApplicationUpdater(均在zip文件中)

  3. 运行更新程序

ApplicationUpdater:运行更新程序时,它将执行以下操作:

  1. 停止应用程序(在本例中为通过init.d的守护程序)

  2. 复制下载的jar文件以覆盖当前的应用程序

  3. 启动应用程序

  4. 清理。

希望它可以帮助某人。


查看完整回答
反对 回复 2019-10-06
?
jeck猫

TA贡献1909条经验 获得超7个赞

我编写了一个Java应用程序,该程序可以在运行时加载插件并立即开始使用它们,这受到jEdit中类似机制的启发。jEdit是开源的,因此您可以选择查看其工作方式。

该解决方案使用自定义的ClassLoader从jar中加载文件。加载它们后,您可以从新的jar中调用某些方法作为其main方法。然后,棘手的部分是确保您摆脱对旧代码的所有引用,以便可以对其进行垃圾回收。我在这方面还不是专家,我已经做到了,但这并不容易。


查看完整回答
反对 回复 2019-10-06
  • 3 回答
  • 0 关注
  • 711 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信