java - 需要更好的 Java 应用程序部署策略

标签 java swing deployment

我有多个用户使用的各种 Java Swing 应用程序。我的部署策略是在网络共享上找到 .jar 文件,用户创建该文件的快捷方式。当用户启动应用程序时,文件会被复制到他们的机器上并在本地执行。此方法允许单一的代码副本并易于更新。

问题是如果当时有任何用户正在使用该应用程序,我无法更新网络共享上的文件。

我无法使用 Web Start,因为我无权访问用于对 jar 进行签名的证书。

我当前的解决方法是创建一个单独的应用程序,将所需的应用程序复制到用户的本地计算机,启动该应用程序,然后启动器退出。从启动器应用程序退出到用户的应用程序变得可见有几秒钟的延迟。

谁能建议一种更好的部署方法,让我可以轻松地更新应用程序的中央副本,而 Windows XP 不会保持对文件的锁定?

更新: JSmooth 方法解决了本质问题。 JSmooth 创建的 .exe 在使用时被锁定,但可以更新包含应用程序功能的 .jar 文件。

最佳答案

可以使用 Java Web Start,因为您可以使用自签名证书来签署您的文件。这会给您的用户一个警告,他们可以一劳永逸地接受。

因此,我建议您采用这种方式,因为这是执行您想要的操作的唯一标准 Java 方式,而且它工作得相当好。通过最新的 Java 6 更新,您可以获得许多有用的新功能。

一条建议:发布新版本时,将 jar 放在新位置,这样指向 JNLP 文件中 jar 文件的 URL 就会发生变化!这是因为 Java Web Start 缓存了 jar 文件,这是我们发现的确保缓存准确的最佳方法。


编辑:我相信您还可以使用 JSmooth 将 Java 文件包装在一个 EXE 文件中,它透明地提取本地计算机上的各种文件并在那里执行它们。这不应锁定原始 EXE 文件。但是,我建议您使用 Web Start 方法。

关于java - 需要更好的 Java 应用程序部署策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564281/

相关文章:

java - 如何在 Drools 规则中声明列表

wcf - 重新部署 WCF 服务时是否必须重新启动 IIS?

.net - 可以在 Ubuntu 上发布 ClickOnce 应用程序吗?

java - 显示 JTabbedPane 的第一个选项卡

java - 自定义绘画和 Z 顺序 : query re painting order

sql-server - 将 SQL Server 数据库从测试部署到上线

java - png 文件压缩为 jpeg 时变成全黑。是因为PNG是无损的吗?

java - 如何检查数组中的复选框是否为空?

java - Android:自定义Listview项目 - 强制在一行

java - JPopupMenu 在鼠标输入时消失