在jar中覆盖java类

时间:2011-01-10 15:52:08

标签: java

我的jbpm.jar中有一个名为org.jbpm.task.Comment的类。

但是,这是一个CR1版本,并且我希望我的应用程序覆盖该类中的错误。

在com.jbpm.task下我的项目中有一个名为Comment的类是否正常,甚至在其他任何罐子里它都会引用我的?

4 个答案:

答案 0 :(得分:5)

JAR文件只是ZIP文件。使用像WinZip这样的工具从JAR中提取所有文件,用你的文件替换.class文件,使用例如文件重新创建ZIP文件。 WinZip,将其重命名为.jar,覆盖原始JAR文件。

如果您没有.class文件的原始源,则需要更正,然后使用Java反编译器为该类生成.java源。它将缺少原始文件中的注释等,但它足以纠正错误(例如,错误的空检查,因为我在某些产品中有几次。)

答案 1 :(得分:2)

我建议使用像7zip这样的Zip实用程序来打开jar文件,并将jar文件中的类替换为最新的。

答案 2 :(得分:1)

这种行为无法保证。有一段时间我因此而经历了糟糕的经历。查看下面的SO线程。如果您的目标是不同的JVM实现,则可能会出现问题。

Xerces behaving differently on SUN JRE v1.5 and IBM J9 v1.5

答案 3 :(得分:0)

您必须确保在bpm.jar之前加载了jar。在某些JRE中,位于同一位置的罐子按字母顺序加载。