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

标签 java maven jax-ws cxf

这是我的 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 代码是通过 org.apache.cxf:cxf-codegen-plugin:2.4.0 从 WSDL 生成的),直到执行:

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)
....

它是关于什么的?我错过了什么依赖?

最佳答案

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

编辑:

还要注意这个 jar 的 Axis 版本。您可以像这样排除它:

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

关于java - 我的 Apache CXF 客户端出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066054/

相关文章:

java - 如何正确格式化 DateTimePicker 中的日期字符串以供 SimpleDateFormat 解析?

java - 为什么我不能将 String 数组与采用 Iterable 作为参数的方法一起使用?

java - 如何从war文件运行特定的类?

maven - 使用maven发布流程跨平台同步 Artifact 版本

web-services - JAX-WS Web 服务,使用 HTTPS 端点 URL 而不是 HTTP 的负载平衡器

java - 在 JSP 页面中使用 request.setAttribute

java - Java 中的 equals() 和 hashCode() 契约

java - Geotools lib 突然从存储库中消失

tomcat - Apache CXF 在关闭 tomcat 时挂起

tomcat - 部署导致错误 : 404 的 Web 服务时 Apache Tomcat 日志中的异常