尝试访问Web服务时,Apache Axis2抛出NoSuchMethodError吗?

use*_*714 0 apache axis2 web-services exception

我正在尝试使用axis2来访问以下Web服务:http : //www.webservicex.net/geoipservice.asmx? WSDL

我在本地拥有Axis2,并且通过将wsdl下载到本地驱动器并运行来生成类:

./wsdl2java.sh -uri geoipservice.wsdl -p geoip -d xmlbeans -s -o geoip
Run Code Online (Sandbox Code Playgroud)

这产生了一个带有build.xml文件的构建目录,然后我在其中运行了“ ant”,并且在libs文件夹中产生了一个客户端jar。

我将此罐子放到类路径上,然后尝试使用以下代码来访问该服务:

GeoIPServiceStub stub = new GeoIPServiceStub("http://www.webservicex.net/geoipservice.asmx?WSDL");
GetGeoIPDocument req = GetGeoIPDocument.Factory.newInstance();
GetGeoIP gic = req.addNewGetGeoIP();
gic.setIPAddress("74.125.91.105");  // google.com
GetGeoIPResponseDocument resp = stub.getGeoIP(req);
System.out.println(resp.getGetGeoIPResponse().toString());
Run Code Online (Sandbox Code Playgroud)

事情似乎在一开始就运行了,我看到结果又回到了syslog中,但是在完成之前它会抛出此异常:

java.lang.NoSuchMethodError: org.apache.axiom.om.impl.OMStAXWrapper.<init>(Lorg/apache/axiom/om/OMXMLParserWrapper;Lorg/apache/axiom/om/OMElement;Z)V
at org.apache.axiom.om.impl.llom.OMStAXWrapper.<init>(OMStAXWrapper.java:52)
at org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReader(OMElementImpl.java:795)
at org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReaderWithoutCaching(OMElementImpl.java:765)
at geoip.GeoIPServiceStub.fromOM(GeoIPServiceStub.java:767)
at geoip.GeoIPServiceStub.getGeoIP(GeoIPServiceStub.java:325)
Run Code Online (Sandbox Code Playgroud)

我到处都用Google搜索,却找不到导致这种情况的原因。谁能帮助我找到我做错了什么?谢谢。

ivy*_*ivy 5

如果编译器使用不同的类定义(在编译过程中)创建.class文件,则将获得NoSuchMethodErrors,而jvm在运行时具有。

就您而言,它错过了 org.apache.axiom.om.impl.OMStAXWrapper(org.apache.axiom.om.OMXMLParserWrapper, org.apache.axiom.om.OMElement)

这可能意味着您在类路径的某处存在错误的org.apache.axiom库。