替换 jar 文件中的单个类文件是否安全?
类文件是否以不安全的方式相互引用?
格雷
是的,你可以运行jar uf mJarFile.jar com\example\mClass.class
.
但是,请注意,如果类定义了常量static final
基元或字符串变量,那么这些值将内联到其他类中(因此不会使用新类中包含的值)。
jar 命令(在 Sun JDK bin 中提供)替换类。
但是,您需要了解以下内容。
jar uf myJar com\test\MyClass.class
在这里,您的课程位于 com.test 包中
如果你的类有任何子类,那么通常这些类也被创建为 MyClass$MySubclass.class
除了 MyClass.class 之外,您都需要替换/添加那些子 classes.class。如
jar uf myJar com\test\MyClass$MySubclass.class
了解您的更改是否涉及任何方法原型更改也很重要,您必须重新编译那些依赖类并使用它。
最重要的是,如果您的 jar 已签名,您必须退出您的 jar。因为如果您更改 jar 中的任何内容,签名将会丢失。