3

我的代码有问题。WSDL 文件由来自 apache cxf 的 wsdl2java 解析。现在我正在尝试与 Web 服务建立连接,但仍然出现空指针异常。

Exception in thread "main" java.lang.NullPointerException
        at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92)
        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:97)
        at javax.xml.ws.Service.<init>(Service.java:56)...

url 地址指向我下载 WSDL 文件的位置。为了构建 jar,我使用 Maven 和依赖项,例如:

  • jaxws-api
  • cxf-rt-运输-http
  • cxf-rt-前端-jaxws
  • cxf-rt-bindings-soap

带有 deps 的 jar 由 maven-assembly-plugin 创建

确实存在 wsdl 文件,因为它是从那里下载的。

有什么建议么?谢谢你的帮助。

顺便提一句。我发现的任何解决方案都不适合我,这不是重复的问题。

4

3 回答 3

3

我在 gradle 中使用 shadowJar 遇到了同样问题。解决方法是显式合并META-INF/cxf/ 目录下的bus-extensions.txt服务文件:

shadowJar {
  archiveName = 'application.jar'
  mergeServiceFiles{
    path='META-INF/cxf'
  }
}
于 2016-08-26T21:52:59.067 回答
1

在部署依赖于Apache CXF库的 Java 应用程序时,我使用了maven-assembly- plugin,目标设置为copy-dependencies。这不会产生单个 JAR,但会将所有需要的 JAR 复制到 target/ 文件夹中。然后很容易将它们全部放在类路径中并启动 Java 应用程序。

于 2019-07-25T08:05:45.993 回答
0

解决方案非常简单,我只是将 Apache CXF lib 的版本更改为旧版本,它就可以工作。所以可能我的配置有问题,或者 Apache CXF 有错误。

因此,作为解决方案,只需检查提供的 lib 的旧版本。

于 2012-07-19T11:08:28.330 回答