10

最近,我对 Java 桌面应用程序进行了修复。我通过更改我的一个类中的代码、编译它并将新 jar 发送到生产环境来做到这一点。

我现在被问到是否可以通过复制我修复的编译类来修补生产中的 jar,或者甚至创建一个能够仅更新修改后的文件的修补程序/脚本。

附加信息:

  1. 补丁不必在运行时应用。这意味着补丁可以作为单独的程序或活动来完成。我的旧程序不需要自动更新。
  2. 这也可以通过 Web 应用程序(WAR 文件)来完成吗?

我想出的最佳答案是这个,但它已经 2 岁了。 修补 Java 软件

我的要求很少吗?我从未见过修补 Java 应用程序的教程。

4

4 回答 4

7

我现在被问到是否可以通过复制我修复的编译类来修补生产中的 jar,或者甚至创建一个能够仅更新修改后的文件的修补程序/脚本。

是的。可以使用jar -u. 也可以以相同的方式修补 WAR 文件。

但我不会推荐它。JAR 或 WAR 文件应该是部署/管理的单元。如果您开始在生产服务器上修补 JAR / WAR 文件,则很难跟踪实际在哪里使用了什么。如果你不小心,就会出现混乱和混乱。

唯一无法避免修补的情况是您有一个 3rd-party 库或您无法从源代码构建的东西,但您仍然需要修改。但即使在这种情况下,最好在您的构建平台上修改 JAR / WAR 并部署修改后的 JAR / WAR。尝试在生产平台上修补 JAR、WAR 或部署的 web 应用程序是一个坏主意。


我的要求很少吗?

是的。有更好的方法...

我从未见过修补 Java 应用程序的教程。

不足为奇,因为有更好的方法......

于 2013-07-10T02:07:32.323 回答
4

您可以通过执行更新旧 jarjar uf jarfile classfile(s)

这将用新的替换具有相同名称的旧类文件,使使用它的自动修补程序不难

于 2013-07-10T00:48:12.283 回答
2

对于部署 Java 桌面应用程序,最好的选择通常是安装该应用程序。使用Java Web 开始。JWS 适用于 Windows、OS X 和 *nix。它包括自动更新。

这也可以通过 Web 应用程序(WAR 文件)来完成吗?

不可以。JWS 适用于桌面应用程序。只要。

于 2013-07-10T00:48:48.847 回答
0

看看Getdown——它旨在提供一个系统,用于在用户的机器上下载和安装一组文件,并根据需要升级这些文件。

于 2013-10-24T08:33:47.970 回答