【问题标题】:Is there are way to patch jar files?有没有办法修补jar文件?
【发布时间】:2023-03-30 14:13:01
【问题描述】:

假设我向某人发送了一个大 jar 或 war 文件。我可以稍后只更改一小部分并将其发送给他吗?假设我只是更改了一个类文件。我将java for重新编译成一个类文件。除了将新的类文件换成旧的类文件之外,我还有什么需要做的吗?

在 java 中你必须重建整个 jar/war 文件吗?另外,是否有一些可用于更新的开源包?

【问题讨论】:

  • stackoverflow.com/questions/946071/… 已经在这里回答了。
  • 我真的有点震惊,以前没有人处理过这个问题。每个人都只是重建整个项目吗?
  • 谢谢大家,非常感谢。

标签: java jar patch war


【解决方案1】:

接收类文件的人可以简单地将该文件添加到 jar 中,只要他们知道将其放入哪个目录即可。请不要使用已签名的 jar,如 cmets 中所述。

jar uf foo.jar foo.class

http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/jar.html

【讨论】:

  • +1,这通常会起作用,但要小心以这种方式修改签名的 JAR。
  • 当你说简单的 zip 文件时,我有一些疑问。据我了解,jarfile 也有清单。
  • @Grae - 当然,但这如何改变压缩与 zip 相同的事实?无论哪种方式,该信息可能与问题无关,因此我将其删除。
  • jar umf foo.jar foo.class - 我在链接上找到了这个。我认为这是最好的选择。
  • 仅供参考,答案中的链接不再有效。这似乎是同一篇文章:docs.oracle.com/javase/7/docs/technotes/tools/solaris/jar.html
【解决方案2】:

您可以通过这种方式复制修改后的 .class 文件。

jar uf test.jar com\test\Test.class

如果有一种合乎逻辑的方法可以让您在单独的 jar 文件中分离出组件,那么我将为每种组件类型创建一个 jar 文件。这样,您就不必将所有内容重新分配给客户端。例如 - 看看Spring 3 如何将组件分离出来。

【讨论】:

  • 即使我一次只需要更改一个 jar 文件,这在我的特定情况下也无济于事,因为所有 jar 文件都在一个 war 文件中。
【解决方案3】:

有 JARDiff,专为更新 Java WebStart 应用程序而设计。

【讨论】:

    【解决方案4】:

    您需要重新构建整个 jar 文件,除非您希望它们解压缩、覆盖文件并重新压缩。

    【讨论】:

    • 是的,jar 文件只是 zip 文件,但是有一个 jar 实用程序可供您使用。它是标准 JDK 的一部分。
    • 我的意思是 unjar/jar 除了 unzip/zip 之外还有什么特别的功能吗?
    • 如果您还没有清单,我相信它会为您创建一个清单。
    【解决方案5】:

    看看jar命令的用法。选项 u 允许您更新现有存档。

    【讨论】:

      【解决方案6】:

      只需使用 7zip 打开您的 jar 文件并覆盖您编辑的类。不过请务必先进行备份。

      【讨论】:

      • @Grae:这取决于清单文件中的内容。通常它不包含与 jar 的一个到下一个版本不同的任何内容。如果它包含签名信息,您也必须更改它。只需像往常一样使用新旧类创建一个 jar,然后比较清单文件,看看这对您是否重要。
      【解决方案7】:

      如果您有旧的和新的 jar 文件,您可以同时创建一个 xdelta 并仅将 delta 文件发送给您的客户端,如果您只更改了一个类,它应该比整个 jar 文件小得多许多。这也适用于签名的 jar,但要求发送者和接收者都具有 xdelta 程序(或能够安装它)。

      当然,你必须先创建新的jar(但这可以通过其他答案已经提到的方法来完成)。

      【讨论】:

        猜你喜欢
        • 2011-08-10
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 2020-03-18
        • 1970-01-01
        • 2021-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多