自动更新jar文件

时间:2010-08-23 06:41:33

标签: java auto-update

我目前正在研究基于java的桌面软件。它是一个相当大的代码库(超过40个jar文件)。

我希望提供自动更新功能。桌面软件不断检查一个后端系统,以查看是否有新版本的jar文件可用。

现在的问题是:如何更换更新的jar文件?

4 个答案:

答案 0 :(得分:3)

如果使用Java Webstart(JNLP)部署应用程序,几乎可以免费获得此机制......

来自http://mindprod.com/jgloss/javawebstart.html

  

Java Web Start的主要优势是自动更新,无需每次都下载整个程序。

答案 1 :(得分:1)

  • 最简单的方法是检查每次启动时的更新,下载更新然后启动应用程序。我认为这是Java Web Start的工作方式(参见aioobes的回答)。

  • 更复杂的是为您的应用程序使用netbeans或eclipse框架。两者都相当复杂,您必须重写您的应用程序才能使用它们。此解决方案支持实时更新。

据我所知,没有简单的方法来更新正在运行的应用程序。可以使用不同的类加载器加载类的新版本,但在仍然引用它们时无法卸载旧版本。

答案 2 :(得分:0)

您还可以序列化您的状态(将其保留在内存中),然后创建一个指向新.jar文件的新ClassLoader实例。然后使用这个新的类加载器再次序列化您的状态。您刚刚更改了执行产品中的underlaying .jars。

请注意,您不需要为实际使用.jar文件的部分更改所有内容的类加载器。这可能是棘手的结论是什么部分。如果做错了,你可能会得到令人讨厌的链接错误。所以..

..为了简单起见,使用WebStart或更新.jars的预加载器,然后启动主应用程序(基本上是WebStart为您做的)。

推销自己的原因是,您可以使用自己的格式进行.jars,加密,其他包装格式等。

答案 3 :(得分:0)

你可以制作一个小型服务器和一个下载最新版本的启动器,替换旧版本,并启动jar:

Runtime.getRuntime().exec("java yourjar -jar");

然后用:

终止启动器
System.exit(1)