0

在实例化 SOAP 客户端时,我得到 NullPointerException

@WebServiceClient(name = "QWEServiceManager", targetNamespace = "http://external.ws.services.abc.com/", wsdlLocation = "file:/C:/Users/XYZ/Desktop/77777/QWEServiceManagerService.wsdl")
public class QWEServiceManagerService extends Service

当我尝试创建客户端实例来调用 SOAP 服务时

QWEServiceManagerService serv = new QWEServiceManagerService()

以上抛出

Exception in thread "main" javax.xml.ws.WebServiceException: Unable to createEndpointReference Provider
    at javax.xml.ws.spi.Provider.provider(Provider.java:160)
    at javax.xml.ws.Service.<init>(Service.java:92)
    at QWEServiceManagerService.<init>(QWEServiceManagerService .java:48)
    at WsClient.main(WsClient.java:26)
Caused by: java.lang.NullPointerException
    at javax.xml.ws.spi.Provider.provider(Provider.java:152)
    ... 3 more
4

1 回答 1

1

问题在于 Java 停止提供 Java 6+ 以上的默认提供程序实现这一事实。

它尝试通过以下步骤找到 Impl:

  • 首先由服务加载程序
  • 来自 JDK 属性(来自 $java.home/lib/jaxws.properties)
  • 使用系统属性
  • 使用 OSGi 服务加载器查找

所以,简单来说,添加一个依赖提供者的实现可以解决这个问题。

对我来说,添加jaxws-rt依赖项解决了这个问题。

注意:我遇到了另一个依赖问题,我确实需要向 stax-ex添加另一个依赖来解决我所有的依赖问题。

于 2019-04-24T16:18:39.973 回答