假设我向某人发送了一个大的jar或war文件。我可以稍后只更改其中一个小节并将其发送给他吗? 假设我只更改了一个类文件。 我重新编译了Java以生成类文件。 除了用新类文件替换旧类文件外,还需要做其他事情吗?
在Java中,您是否必须重建整个jar / war文件?此外,是否有可用于更新的开源软件包?
只要知道将文件放在哪个目录下,接收课程文件的人就可以将该文件简单地添加到jar文件中。请注意评论中提到的签名jar文件。
jar uf foo.jar foo.class
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/jar.html
jar uf test.jar com\test\Test.class
如果有逻辑方法可以将您的组件分开到单独的jar文件中,那么我建议每种组件类型创建一个jar文件。这样,您就不必将所有内容重新分发给客户端。例如,请看看Spring 3是如何将组件分离的。
有 JARDiff,旨在更新 Java WebStart 应用程序。
如果你不想让它们解压、覆盖文件并重新打包,那么你需要重新构建整个Jar文件。
看一下jar
命令的用法。选项u允许您更新现有的存档。
只需使用7zip打开您的jar文件并覆盖您编辑过的类即可。不过请务必先进行备份。
如果你有旧的和新的JAR文件,你可以创建一个xdelta,然后只发送增量文件给客户端,这个文件通常比整个JAR文件要小得多,尤其是当你只修改了其中的一部分类。对于签名的 JAR 文件,这也可以很好地工作,但需要发送方和接收方都安装 xdelta 程序(或者能够安装它)。
当然,首先你必须创建新的JAR文件(但这可以通过其他答案中提到的方法完成)。