Что не так с моим клиентом Apache CXF? - PullRequest
22 голосов
/ 20 мая 2011

Это часть моего pom.xml:

<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-rt-frontend-jaxws</artifactId>
  <version>${cxf.version}</version>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-rt-transports-http</artifactId>
  <version>${cxf.version}</version>
  <scope>runtime</scope>
</dependency>

Я пытаюсь использовать Apache CXF в качестве реализации JAX-WS.Все работает нормально (код Java генерируется из WSDL с помощью org.apache.cxf:cxf-codegen-plugin:2.4.0), до выполнения:

java.lang.NoSuchMethodError:
javax.wsdl.xml.WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition;
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:237)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:186)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:91)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:203)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:90)
at javax.xml.ws.Service.<init>(Service.java:56)
....

О чем это?Какую зависимость я пропустил?

Ответы [ 2 ]

28 голосов
/ 20 мая 2011

Вероятно, у вас есть версия 1.5 (или более старая) wsdl4j, пришедшая откуда-то еще. CXF требует версии 1.6.x.

EDIT:

Также обратите внимание на версию этой банки для Axis. Вы можете исключить это так:

        <exclusions>
            <exclusion>
                <artifactId>axis-wsdl4j</artifactId>
                <groupId>axis</groupId>
            </exclusion>
        </exclusions>
2 голосов
/ 20 мая 2011

Эта зависимость - wsdl4j-1.6.2.jar, она, вероятно, не будет транзитивно разрешена с вашим текущим набором зависимостей.

...