代码之家  ›  专栏  ›  技术社区  ›  Ken Liu

对于jar文件是否有类似bsdiff/courgete的东西?

  •  15
  • Ken Liu  · 技术社区  · 14 年前

    bsdiff Courgette 用于修补二进制文件,如Chrome发行版。有没有类似的工具来修补jar文件?

    我正在通过带宽有限的连接远程更新jar文件,希望尽量减少发送的数据量。在某种程度上,我确实可以控制客户机(即,我可以在本地运行脚本),并且我可以保证目标应用程序当时不会运行。

    我知道我可以通过在类路径中放置更新的类文件来修补java应用程序,但是我更喜欢使用更干净的方法来进行更新。如果我可以从目标jar文件开始,应用一个二进制补丁,然后得到一个更新的jar文件,该文件与新jar(从中创建补丁)相同(按位)。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Aaron Digulla    14 年前

    试试这个 javaxdelta Sourceforge上的项目。它应该允许创建补丁并应用它们。

        2
  •  1
  •   Logan Capaldo    14 年前

    .jar文件已经压缩了,所以您真正需要的是一种在zip文件上运行良好的压缩;)。如果你能做到的话 之前 如果你把它塞进罐子里,你就更有可能利用我所期望的“java”知识。我想你可以修改本文中描述的因式分解 paper 作为java特定的压缩方法。

        3
  •  1
  •   user340535    13 年前

    这是消除冗余的工件。所以不管你的diff工具有多好,它都有一个几乎不可能完成的任务。

    但是,有一个解决方案,就是生成diff并将补丁应用到 未压缩 数据。例如:

    项目-v2.jar

    项目-v1.jar->项目-v1.jar.unjar

    project-v2.jar->项目-v2.jar.unjar

    project-v1.jar(unjar)—>project-v1.jar.unjar-(应用补丁)->项目-v1.patched.unjar(rejar)—>项目-v1.patched.jar

    实际上,“unjar”(rejar)程序应该获取一个源ZIP文件(或任何其他类型的文件),并将内容(包括头、属性和任何其他细节)解压缩到输出流(而不是创建单个文件)。

        4
  •  0
  •   DrAhmedJava    9 年前

    检查 delta-updater

    IOFilter 筛选包含的文件