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