如何修补Java程序?

时间:2013-07-10 00:40:19

标签: java jar war auto-update

最近我将修复程序应用于Java桌面应用程序。我通过更改其中一个类中的代码,编译它并将新jar发送到生产环境来完成此操作。

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

其他信息:

  1. 不必在运行时应用补丁。这意味着补丁可以作为单独的程序或活动来完成。我的旧程序不需要自动更新。
  2. 这可以通过Web应用程序(WAR文件)完成吗?
  3. 我提出的最佳答案就是这个,但它已经有2年了。 Patching Java software

    我的要求是否罕见?我从未见过修补Java应用程序的教程。

4 个答案:

答案 0 :(得分:7)

  

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

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

但我不推荐它。 JAR或WAR文件应该是部署/管理的单位。如果您开始在生产服务器上修补JAR / WAR文件,则很难跟踪实际使用的位置。如果你不小心,混乱和混乱将统治。

唯一无法避免修补的情况是,您拥有第三方库或无法从源代码构建的内容,但您需要进行修改。但即使在这种情况下,最好在构建平台上修改JAR / WAR并部署修改后的JAR / WAR。尝试在生产平台上修补JAR,WAR或部署的webapp是一个坏主意。


  

我的要求是否罕见?

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

  

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

毫不奇怪,鉴于有更好的方法......

答案 1 :(得分:4)

您可以通过执行jar uf jarfile classfile(s)

来更新旧jar

这会用新名称替换同名的旧类文件,使用它的自动修补程序不应该很难

答案 2 :(得分:2)

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

  

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

没有。 JWS适用于桌面应用程序。仅

答案 3 :(得分:0)

查看Getdown - 旨在提供一个系统,用于在用户的计算机上下载和安装文件集,并根据需要升级这些文件。