最近我将修复程序应用于Java桌面应用程序。我通过更改其中一个类中的代码,编译它并将新jar发送到生产环境来完成此操作。
我现在被问到是否可以通过复制我修复的编译类来修改生产中的jar,甚至可以创建一个能够仅更新修改过的文件的修补程序/脚本。
其他信息:
我提出的最佳答案就是这个,但它已经有2年了。 Patching Java software
我的要求是否罕见?我从未见过修补Java应用程序的教程。
答案 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)
这会用新名称替换同名的旧类文件,使用它的自动修补程序不应该很难
答案 2 :(得分:2)
对于部署Java桌面应用程序,最好的选择通常是安装应用程序。使用Java Web Start。 JWS适用于Windows,OS X& * nix中。它包括自动更新。
这可以通过Web应用程序(WAR文件)完成吗?
没有。 JWS适用于桌面应用程序。仅
答案 3 :(得分:0)
查看Getdown - 旨在提供一个系统,用于在用户的计算机上下载和安装文件集,并根据需要升级这些文件。