jar中的扩展类不起作用

时间:2015-04-01 04:17:46

标签: java jar xmlbeans

我有一个项目,其中引用了xmlbeans 2.6.0 jar并将其添加到类路径中。我创建了一个类似于下面的类:

import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.impl.values.XmlComplexContentImpl;
import org.apache.xmlbeans.impl.values.XmlObjectBase;

public class Test3 extends XmlComplexContentImpl {

    public Test3(SchemaType type) {
        super(type);
    }

    public void hello() {

        // The below method is present in XmlObjectBase which is extended by XmlComplexContentImpl
        // XmlObjectBase and XmlComplexContentImpl are part of jar
        generatedSetterHelperImpl(null, null, 0, (short)2);

    }

}

当我创建Test3的实例并调用hello()方法时,会抛出错误NoSuchMethodError。它基本上不查找方法的扩展类,而是在Test3中搜索方法。

java.lang.NoSuchMethodError: com.voxify.vui.action.Test3.generatedSetterHelperImpl(Lorg/apache/xmlbeans/XmlObject;Ljavax/xml/namespace/QName;IS)Lorg/apache/xmlbeans/XmlObject;

2 个答案:

答案 0 :(得分:0)

这些错误通常来自jar版本冲突。您可能在编译时和运行时有不同的jar版本。快速检查的一种方法是删除您认为它被引用的jar。这样你就可以在classpath中找到同一个jar的不同版本,它实际上已经被加载了。

答案 1 :(得分:0)

就我而言,我的应用程序路径中有两个版本的同一个jar,即xmlbeans-2.6.0和xmlbeans-2.3.0。一旦删除最旧的程序,程序就会运行。