1

我有一个用于客户端的 Swing/Java 应用程序,并且每周更新一次。问题是设置只是布置类及其各自的目录,而在更新时我只是更新类。

我想做一个包含所有类的 jar,但我不确定如何更新它......

此外,一些客户需要在一周内进行一些更新,只有一两个课程会更新。

这样做的正确方法是什么?

我正在使用 Eclipse。编辑:我知道如何创建 jar,只是不知道如何动态更新它。

4

2 回答 2

3

我建议您查看 Java WebStart,它旨在完全满足您的需求。

您需要首先创建完成的部署,然后您可以考虑为部署创建 JNLP 文件,以及将所有文件放到 Web 服务器以供用户访问的方法。现在只需让用户在每次更新时下载整个内容。当您变得更有经验时,您可以研究如何进行增量更新。

我强烈建议在部署路径中包含内部版本号或时间戳,这样 jar 文件就不会意外地错误地缓存在客户端中。

于 2013-08-14T17:37:30.520 回答
2

执行此操作的一般方法(即使只进行了很小的更改)是在每次更新后重新打包您的 JAR 并将该 JAR 提供给用户。用户将替换现有的 JAR。如何生成 JAR 取决于您。许多 IDE 都支持它,你可以编写一个 shell 脚本,使用现有的构建系统,如 ant 或 maven 甚至 make,等等。(见下面的编辑)

如果您的 JAR 非常大并且部署繁琐,您可以将项目拆分为更小的子组件,每个子组件都有自己的 JAR,并且只重新分发包含更改的子组件。这对您来说可能是也可能不是主要的重构,甚至可能不合适。对于大多数小型或中等规模的项目,这通常是不必要的。

至于部署,还有无数种方法可以让用户更轻松。你可以给他们一个 JAR 文件。您可以使用例如 install4j。您可以使用 Java Web Start(虽然它有点笨拙)。还有其他的。

install4j 和 JWS 都支持自动检查更新。如果您选择支持该功能,您需要做的就是更新您的分发站点,用户将自动收到更新。这也取决于你。

但是对您的问题的简短回答是:如果您将所有类都打包在一个 JAR 中,那么无论有多少类更改,您都希望将整个更新的 JAR 提供给用户。抵消这一成本的好处是 JAR 是一个很好的、压缩的、自包含的应用程序/库源的集合,这使得管理和部署非常方便。

编辑:响应您指定使用 Eclipse 的编辑,Josh M 在他对您的答案的评论中为您提供说明。要添加到他的评论中,要导出一个 Runnable Jar,您必须设置一个运行配置,如果您已经在 Eclipse 中运行您的应用程序,那么您可能已经有了。如果没有,您可以在“运行”菜单中创建一个。

编辑 2:请参阅Thorbjørn Ravn Andersen 的回答以及一些好的 JWS 提示。

于 2013-08-14T17:26:37.663 回答