替换jar文件中的单个类文件是否安全?
类文件是否以不安全的方式相互引用?
GRAE
答案 0 :(得分:7)
是的,您可以运行jar uf mJarFile.jar com\example\mClass.class
。
但是,请注意,如果类定义了常量static final
原语或字符串变量,那么这些值将为in-lined into other classes(因此不会使用较新类中包含的值) 。
答案 1 :(得分:4)
jar命令(在Sun JDK bin中提供)替换类。
但是,您需要了解以下内容。
jar uf myJar com\test\MyClass.class
此处您的班级位于com.test包
中如果你的类有任何子类,那么通常这些类也被创建为 MyClass的$ MySubclass.class
除了MyClass.class之外,您还需要替换/添加这些子类.class。 比如
jar uf myJar com\test\MyClass$MySubclass.class
了解任何方法原型所涉及的更改是否发生变化也很重要, 你必须重新编译那些依赖类并使用它。
最重要的是,如果你的罐子已签名,你必须辞去你的罐子。因为如果你在jar中改变任何东西,签名就会丢失。