2011-07-23 64 views
0

我想擊中Axis2的以下Web服務:http://www.webservicex.net/geoipservice.asmx?WSDLApache Axis2在嘗試點擊Web服務時拋出NoSuchMethodError?

我有Axis2的地方,而我通過下載WSDL到本地驅動器和運行產生我的課:

./wsdl2java.sh -uri geoipservice.wsdl -p geoip -d xmlbeans -s -o geoip 

這樣就產生了用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()); 

事情似乎在第一次運行,我看到的結果回來的系統日誌,但在它結束之前,它會拋出以下異常:

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) 

我已經搜索了所有內容,一直未能找到導致此問題的原因。任何人都可以幫我找到我做錯了什麼?謝謝。

回答

2

你得到NoSuchMethodErrors如果你的編譯器使用不同類的定義(編譯時)來創建你的.class文件,然後在JVM運行時。

在你的情況下,它錯過了org.apache.axiom.om.impl.OMStAXWrapper(org.apache.axiom.om.OMXMLParserWrapper, org.apache.axiom.om.OMElement)

構造這可能意味着你打錯org.apache.axiom庫某處類路徑中。

+0

您先生,是對的。我對我的類路徑比我用來編譯我的客戶罐中的一個Axis2的框架的舊版本。我升級了我的classpath中的jar,然後它們是相同的版本。非常感謝你,我花了一個小時,但現在我知道將來的參考 – user146714