Apache Axis2 выдает NoSuchMethodError при попытке попасть в веб-сервис? - PullRequest
0 голосов
/ 23 июля 2011

Я пытаюсь запустить следующий веб-сервис с помощью axis2: http://www.webservicex.net/geoipservice.asmx?WSDL

У меня есть Axis2 локально, и я сгенерировал свои классы, загрузив wsdl на свой локальный диск и запустив:

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

Это привело к созданию каталога сборки с файлом build.xml, в котором я затем запустил "ant", и к клиентскому файлу в папке libs.

Я бросил эту банку на мой путь к классу, а затем попытался запустить службу, используя следующий код:

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)

Я гуглил повсюду и не смог найти причину этого. Может кто-нибудь помочь мне понять, что я делаю не так? Спасибо.

1 Ответ

4 голосов
/ 24 июля 2011

Вы получаете NoSuchMethodErrors, если ваш компилятор использовал другое определение класса (во время компиляции) для создания вашего файла .class, чем у jvm во время выполнения.

В вашем случае он пропускает конструктор для org.apache.axiom.om.impl.OMStAXWrapper(org.apache.axiom.om.OMXMLParserWrapper, org.apache.axiom.om.OMElement)

Это, вероятно, означает, что у вас неправильная библиотека org.apache.axiom где-то на вашем пути к классам.

...