2011-07-23 3 views
0

私はAxis2のでは、次のWebサービスをヒットしようとしています:http://www.webservicex.net/geoipservice.asmx?WSDLWebサービスにヒットしようとすると、Apache Axis2が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()); 

物事が最初に実行するように見える、と私は結果がsyslogに戻って来るのを見る:

は、私は私のクラスパス上にこのjarを落とし、その後、私は、次のコードを使用してサービスをヒットしようとしました終了する前に、この例外がスローされます。

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

コンパイラが(コンパイル時に).classファイルを作成するために別のクラス定義を使用し、次に実行時にjvmが持つ場合、NoSuchMethodErrorsが発生します。あなたのケースでは

は、それはそれはおそらく、あなたのクラスパス上のどこか間違っorg.apache.axiomライブラリを持っていることを意味しorg.apache.axiom.om.impl.OMStAXWrapper(org.apache.axiom.om.OMXMLParserWrapper, org.apache.axiom.om.OMElement)

のコンストラクタをミス。

+0

あなたは正しいです。私はクライアントパスをコンパイルするために使用したものよりもクラスパス上に古いバージョンのaxis2フレームワークを持っていました。私はクラスパス上のjarファイルをアップグレードし、それらは同じバージョンでした。本当にありがとう、私はそれに1時間を費やしましたが、今私は将来の参照のために知っている – user146714

関連する問題