我的Apache CXF客户端出了什么问题?

23

这是我的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的实现。一切工作正常(使用org.apache.cxf:cxf-codegen-plugin:2.4.0从WSDL生成Java代码),直到执行阶段:

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个回答

29

你很可能有一个来自其他地方的1.5(或更早)版本的wsdl4j。CXF需要1.6.x版本。

编辑:

还要留意此jar文件的Axis版本。您可以这样排除它:

        <exclusions>
            <exclusion>
                <artifactId>axis-wsdl4j</artifactId>
                <groupId>axis</groupId>
            </exclusion>
        </exclusions>

我有一个使用Axis混合的遗留WS,这给我带来了烦恼,再加上axis版本在组ID后面添加了“axis” :( - 感谢这个+1 - javamonkey79
1
谢谢@DanielKulp,这节省了我的时间。 - Salah Eddine Taouririt

2

这个依赖是wsdl4j-1.6.2.jar,它可能不会在您当前的依赖关系集中被传递解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接