如何在不解压缩的情况下更改现有jar文件的现有子目录中的类文件?

时间:2015-10-08 13:46:21

标签: java jar

有一个命令jar -uf(https://docs.oracle.com/javase/tutorial/deployment/jar/update.html),但根据我的观察,它只允许将一个类文件添加到jar的head目录中。否则,我需要解压缩jar,更改类文件然后再打包。还有更优雅的方式吗?

2 个答案:

答案 0 :(得分:1)

罐子只是一个拉链。因此,您可以使用标准的zip客户端(winzip,7zip,winrar ...)打开它,并添加或删除所有类(具有扩展名.class的普通文件)。

但是为什么你需要更改现有库中的类?这通常不是一个好的程序。如果您是图书馆的所有者,只需重建它。如果您不确切地知道现有类之间的交互,那么如果您不更改现有类可能会产生意外错误。

答案 1 :(得分:0)

我证实了Davide Lorenzo的正确评论:通常在现有jar中替换类不是一个好习惯,但如果你必须绝对这样做,你可以使用命令-line utility jar

jar uf my.jar -C myclasses foo/bar/MyClass.class

...其中myclasses代表所有* .class文件的完整子树的根目录。