有没有办法修补jar文件?

时间:2011-02-21 18:07:00

标签: java jar patch war

假设我向某人发送了一个大罐子或战争档案。我以后可以改变一个小部分并发送给他吗?假设我刚刚更改了一个类文件。我将java重新编译为类文件。除了交换旧类文件的新类文件,还有其他我需要做的事情吗?

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

7 个答案:

答案 0 :(得分:7)

接收类文件的人可以简单地将该文件添加到jar中,只要他们知道要将其放入哪个目录。如评论中所述,厌倦签名的jar。

jar uf foo.jar foo.class

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

您需要重建整个jar文件,除非您希望它们解开,覆盖文件并重新开始。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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