假设我向某人发送了一个大罐子或战争档案。我以后可以改变一个小部分并发送给他吗?假设我刚刚更改了一个类文件。我将java重新编译为类文件。除了交换旧类文件的新类文件,还有其他我需要做的事情吗?
在java中你必须重建整个jar / war文件吗?此外,是否有一些开源软件包可用于更新?
答案 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(但这可以通过其他答案已经提到的方法来完成)。