我正在尝试在 jdk1.5 上运行 web 服务客户端并给我以下错误:
javax.xml.ws.WebServiceException: Provider com.sun.xml.internal.ws.spi.ProviderImpl not found
任何建议将不胜感激。
确保在您的路径上您还可以找到包含该类的 jar com.sun.xml.internal.ws.spi.ProviderImpl
。我检查了可能需要什么 jar,在这里您可以看到包含给定类的 jar。其中任何一个都可能对您有所帮助。
我不知道为什么它找不到正确的类的确切原因,但我认为它在查找资源时Oracle 数据库中的 Java 类加载器(或特性)存在一些问题。
我从 java.net 加载了 JAX-WS 参考实现及其与 SYS 用户的所有依赖项(具有公共访问权限和公共同义词)。但是从我加载到用户 SCOTT 模式的服务 WSDL 生成的类。并且由于某种原因,当 SCOTT 运行使用服务的程序时,javax.xml.ws.spi.FactoryFinder
确实在资源中查找实现名称META-INF/services/javax.xml.ws.spi.Provider
(具有正确的值com.sun.xml.ws.spi.ProviderImpl
)但找不到该资源,因此尝试从硬编码的类名(com.sun.xml.internal.ws.spi.ProviderImpl
)加载提供程序并失败。
META-INF/services/*
对我来说,解决方案是将所有 JAX-WS RI 和依赖项 jar 中的所有文件加载到 SCOTT 模式。另一种方法可能是将所有 JAX-WS RI、依赖项和最终程序加载到相同的模式。