【问题标题】:How create a Java application that auto-updates itself?如何创建自动更新自身的 Java 应用程序?
【发布时间】:2016-11-22 03:39:24
【问题描述】:

它就像一个可以自我更新的应用程序一样简单。 更具体地说,可能是一个从网络加载 jar 文件并将其替换为当前 jar 的启动器。

我想要的方法是:

  • 用 Java 编码的启动器。
  • 该启动器整体使用类加载器等
  • 我想保留前一个 jar 中的数据。也许前一个 jar 中的数据写入 .txt 文件并将它们传递给新的? (如果可能)

我对类加载器或任何要遵循的方向一无所知。 所以我的问题是“我如何使用类加载器来创建自动更新的 Java 应用程序?”。

附注我希望 java web start 是最后的选择。几行代码对我很有帮助。

编辑:理论上我完全理解你在说什么。我正在寻找的是特定的链接代码,我可以将其作为参考。 这个问题不是重复的,因为我找不到链接或代码,而是理论。

【问题讨论】:

  • 我不知道你为什么关注Classloader - 它并没有像我认为的那样做。您正在寻找的是一些可以访问网络以检查是否需要更新的代码(独立于实际应用程序),如果需要,则下载它。完成后,您需要用新下载的 jar 文件覆盖应用程序的当前 jar 文件。
  • @AndrewG 类加载器的想法来自link。但我同意你的看法。您还有什么方向可以让我遵循吗?

标签: java jar classloader desktop-application auto-update


【解决方案1】:

您可以使用 URLClassLoader 从 URL 加载 jar 文件。请注意,URL 也可能是本地文件,我建议您在加载之前将 jar 文件下载到本地,而不是直接从网络加载。这样做的原因是您希望应用程序保持可用,即使用户无法访问您的服务器。

不过,我也建议不要采用这种方法。如果要更新启动器怎么办?最好从主应用程序下载一个单独的更新程序应用程序,启动单独的更新程序应用程序,然后杀死主应用程序并更新它。

【讨论】:

  • 感谢您的回答。正如我在编辑时所说的那样,您有什么具体的内容可以指出给我看吗?
  • 我不太确定您在这里期望什么样的代码示例,这是一个相当普遍的问题。有人在这里写了关于他们的方法的博客:masterex.github.io/archive/2011/12/25/jupar.html您是否希望看到任何具体的内容?
  • 不,这实际上正是我想要的。我可以研究并了解一切如何运作的参考。感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 2010-09-23
  • 2014-06-08
  • 2012-12-09
  • 2012-03-31
相关资源
最近更新 更多