Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';向Java Swing应用程序添加自更新功能的最佳方法是什么?_Java_Swing - Fatal编程技术网

什么';向Java Swing应用程序添加自更新功能的最佳方法是什么?

什么';向Java Swing应用程序添加自更新功能的最佳方法是什么?,java,swing,Java,Swing,我正试图找到一种方法,向我正在开发的Java/Swing应用程序添加一个自更新功能 基本上,我有一堆带有额外功能的jar文件,当安装的用户发生变化时,这些文件将被重新部署到他们身上。没什么复杂的,只需检查是否发布了新版本,通过HTTP下载,然后向用户提供重启应用程序的选择 我看过webstart,它可以工作。但这个特殊的应用程序在类加载和GC内存设置方面做了一些古怪的事情,这些设置看起来不受webstart的支持,或者至少会使事情复杂化。(这是JMeter经过调整的构建) 我也加入了这个插件处理

我正试图找到一种方法,向我正在开发的Java/Swing应用程序添加一个自更新功能

基本上,我有一堆带有额外功能的jar文件,当安装的用户发生变化时,这些文件将被重新部署到他们身上。没什么复杂的,只需检查是否发布了新版本,通过HTTP下载,然后向用户提供重启应用程序的选择

我看过webstart,它可以工作。但这个特殊的应用程序在类加载和GC内存设置方面做了一些古怪的事情,这些设置看起来不受webstart的支持,或者至少会使事情复杂化。(这是JMeter经过调整的构建)


我也加入了这个插件处理程序,但它是非常alpha的,并且尝试过多地处理alpha中常见的bug。

我做了完全相同的事情。但那是很久以前的事了,所以今天可能有更好的工具

我发现我需要的是一个加载器。加载器主程序在类路径中没有应用程序JAR。它首先下载一个更新(如果需要),然后在类路径中创建一个带有app jars的自定义类加载器,并调用应用程序主类的main方法。这不是很复杂。IIRC我需要这样做,因为如果JAR已经在类路径中,则无法在windows中覆盖它们


希望这有帮助

6年前,我们有一款swing应用程序,可以自我更新。正如你所建议的,

1) 它通过http下载了最新的JAR,
2) 将它们复制到文件夹中
3) 由于swing应用程序是使用.BAT文件启动的,在用户说是后,我们将关闭swing应用程序并在更新文件夹中查找任何文件。如果是,则启动另一个.BAT文件将新JAR复制到所需目录

4) 然后重新启动swing应用程序。

我认为您应该再次查看Java WebStart,或者至少详细说明您认为会导致问题的“时髦类加载”(因为它也可能导致此处提出的任何解决方案出现问题)


IIRC,您可以使用Java WebStart()设置命令行参数。

我肯定会首先试用WebStart。我们已经使用Webstart成功地启动了早期的EclipseRCP应用程序,并且您可能不会遇到比OSGI框架(EclipseEquinox)更令人毛骨悚然的类加载问题

在你的问题中,你能给出一些关于类加载方法的细节吗


关于GC和其他VM设置:在Webstart用于启动应用程序的JNLP(Java网络启动协议)文件中可以很容易地指定这些设置。

更新、插件、关注点分离等正是其中的内容-您可能想看看这一点。它不会免费提供(阅读:初始学习曲线陡峭,特别是当前使用类加载技巧时),至少有好的开源实现(felix-see、equinox-see和其他)


对于这些实现,可以使用自动更新程序—如果您正确编写模块,则可以在运行时进行更新,而无需重新启动。

Java Web Start是一个不错的选择。GC的东西并不重要。类加载可能是个问题。但当用户信任您时,您可以授予所有权限,并且您将能够进行自定义类加载。也许重新考虑一下类加载的时髦东西会很好。真的有必要吗?或者看看NetBeans。应该会发现自动更新的灵感。

你能给一个RCP应用程序的链接吗?你是说一个可以上网的RCP应用程序吗?我工作过的一个都是用于内联网类型的企业应用程序,因此在web上不可用。这似乎是最简单的方法。我在服务器上保存了一个XML文件,并在本地保存了一个副本,其中列出了要更新的所有文件以及版本号。快速和简单,但做的把戏。