我有一个项目,其中引用了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;
答案 0 :(得分:0)
这些错误通常来自jar版本冲突。您可能在编译时和运行时有不同的jar版本。快速检查的一种方法是删除您认为它被引用的jar。这样你就可以在classpath中找到同一个jar的不同版本,它实际上已经被加载了。
答案 1 :(得分:0)
就我而言,我的应用程序路径中有两个版本的同一个jar,即xmlbeans-2.6.0和xmlbeans-2.3.0。一旦删除最旧的程序,程序就会运行。