最近我对 Java 桌面应用程序进行了修复。我通过更改其中一个类中的代码、编译它并将新的 jar 发送到生产环境来做到这一点。
我现在被问到是否可以通过复制我修复的已编译类来在生产环境中修补 jar,或者甚至创建一个能够只更新修改后的文件的修补程序/脚本。
附加信息:
- 不必在运行时应用补丁。这意味着补丁可以作为一个单独的程序或 Activity 来完成。我的旧程序不需要自动更新。
- 这也可以通过网络应用程序(WAR 文件)完成吗?
我想出的最佳答案是这个,但它已有 2 年历史了。 Patching Java software
我的需求很少见吗?我从未见过给 Java 应用程序打补丁的教程。
最佳答案
I'm now asked if it is possible to just patch the jar in production by just copying the compiled class that I fixed, or even create a patching program/script that will be able to update just the modified files.
是的。可以使用 jar -u
给 JAR 文件打补丁。也可以用相同的方式给 WAR 文件打补丁。
但我不会推荐它。 JAR 或 WAR 文件应该是部署/管理的单元。如果您开始在生产服务器上修补 JAR/WAR 文件,则很难跟踪实际在何处使用的内容。如果您不小心,就会出现困惑和困惑。
唯一无法避免打补丁的情况是您有第 3 方库或无法从源代码构建的东西,但您仍然需要进行修改。但即使在那种情况下,最好还是在您的构建平台上修改 JAR/WAR 并部署修改后的 JAR/WAR。尝试在生产平台上修补 JAR、WAR 或已部署的网络应用程序是个坏主意。
Is my requirement rare?
是的。有更好的方法...
I have never seen a tutorial to patch a Java application.
这并不奇怪,因为有更好的方法......
关于java - 如何给 Java 程序打补丁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17560635/