如何修补Java程序?

如何修补Java程序?,java,jar,war,auto-update,Java,Jar,War,Auto Update,最近,我对一个Java桌面应用程序应用了一个修复程序。为此,我更改了我的一个类中的代码,对其进行编译,并将新的jar发送到生产环境 现在有人问我,是否可以通过复制我修复的编译类来修补生产中的jar,或者甚至创建一个修补程序/脚本来只更新修改过的文件 其他信息: 不必在运行时应用修补程序。这意味着补丁可以作为单独的程序或活动完成。我的旧程序不需要自动更新自己 web应用程序(WAR文件)也可以这样做吗 我想出的最好的答案是这个,但它已经2年了。 我的需求少吗?我从未见过修补Java应用程序的教程

最近,我对一个Java桌面应用程序应用了一个修复程序。为此,我更改了我的一个类中的代码,对其进行编译,并将新的jar发送到生产环境

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

其他信息:

  • 不必在运行时应用修补程序。这意味着补丁可以作为单独的程序或活动完成。我的旧程序不需要自动更新自己
  • web应用程序(WAR文件)也可以这样做吗
  • 我想出的最好的答案是这个,但它已经2年了。


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

    您可以通过执行
    jaruf-jarfile类文件


    这将用新的类文件替换同名的旧类文件,使自动修补程序能够使用这些文件来部署Java桌面应用程序。最好的选择通常是安装应用程序。使用。JWS在Windows、OSX和*nix上工作。它包括自动更新

    web应用程序(WAR文件)也可以这样做吗

    不是。JWS用于桌面应用程序。只是

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

    对。可以使用
    JAR-u
    修补JAR文件。也可以用同样的方法修补WAR文件

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

    唯一无法避免修补的情况是,您有一个第三方库或一些无法从源代码构建的东西,但仍然需要修改。但即使在这种情况下,最好在构建平台上修改JAR/WAR并部署修改后的JAR/WAR。试图在生产平台上修补jar、war或部署的webapps是个坏主意


    我的需求少吗

    对。有更好的方法

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


    不足为奇,考虑到有更好的方法…

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

    这个问题似乎是离题的,因为它是关于基础设施的-更适合程序员或服务器,谢谢您的帮助回答。正如我在重新部署测试过的Jar/War时所说的,这是我通常做的事情。这是我们安全和标准部门的授权,我很高兴我不是唯一一个觉得这个要求很奇怪的人。@JefreyValencia-我很想用“为我们提供经过修补和适当测试的罐子”来反驳。我也想知道他们要求你修补什么。这听起来有点奇怪..Hi,Stephen,安全和标准团队或多或少只是在监视我们对已经投入生产的应用程序所做的更改。他们给出的一个示例(简化/改写)是,如果Windows操作系统中存在bug,您只需修补它,而不是重新安装应用程序。这个论点是有道理的,但在我有限的经验中,我不知道这对于java应用程序是否可行,甚至是良好的实践。那么,当您将新版本部署到生产系统时,他们会做什么呢?他们想让你提供这些(二进制)补丁怎么办?反编译它们?在我看来,S&S团队中的某些管理类型创建了一个“流程”,而没有考虑它是否真正实现了任何目标。感谢您的回答,选择Stephen answer是因为他还添加了其他信息。谢谢您的回答。我们可能会在未来的桌面应用程序上尝试这种方法