Node.getTextContent()上的AbstractMethodError

时间:2015-10-26 07:32:34

标签: java

以下是抛出AbstractMethodError的示例代码块:

import org.w3c.dom.Node;
..
Node root = soapBody.getElementByTagNameNS("http://xxx.xxx/Schema/v9", "Result").item(0); //Namespace
for (int i = 0; i < root.getChildNodes().getLength(); i++) {
 Node child = root.getChildNodes().item(i); //Set to SubResult
 String result = child.getTextContent(); //Throws error
}

样品肥皂回复:

soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body><a1:Response xmlns:a1="http://xxx.xxx/Schema/v9"><a1:SubResult>50</<a1:SubResult></a1:Response></soapenv:Body></soapenv:Envelope>

抛出错误:

java.lang.AbstractMethodError: org.apache.axis.message.MessageElement.getTextContent()Ljava/lang/String;

使用的Java版本:1.5

Tomcat版本 - 6.0.41

选中org.w3c.dom.Node for 1.5,它确实有方法getTextContent()

出现此错误的可能原因是什么? 另外,为什么会出现这种情况:org.apache.axis.message.MessageElement而不是org.w3c.Node

1 个答案:

答案 0 :(得分:1)

javadoc of the AbstractMethodError说:

  

当应用程序尝试调用抽象方法时抛出。一般,   编译器捕获此错误;此错误只能在运行时发生   时间,如果某个类的定义自那以后不一致改变了   最后编译了当前正在执行的方法。

所以看起来你的类路径中有一些不兼容的版本。

org.apache.axis.message.MessageElement是Axis的一部分,应该实现org.w3c.dom.Node,因此这两个版本似乎不匹配。确保在类路径中有两个匹配的版本。