无法创建 Provider:类 com.sun.xml.ws.spi.ProviderImpl 无法转换为类 javax.xml.ws.spi.Provider

问题描述 投票:0回答:1

我使用

wsimport
命令 (java8) 从 wsdl 中提取了一个 jar。

现在,我尝试使用该 jar 来执行特定的 Web 服务,它向我显示此错误:

Exception in thread "main" javax.xml.ws.WebServiceException: Unable to create Provider: class com.sun.xml.ws.spi.ProviderImpl cannot be cast to class javax.xml.ws.spi.Provider (com.sun.xml.ws.spi.ProviderImpl and javax.xml.ws.spi.Provider are in unnamed module of loader 'app')
    at javax.xml.ws.spi.Provider.provider(Provider.java:88)
    at javax.xml.ws.Service.<init>(Service.java:56)
    at com.Service01.<init>(Service01.java:42)
    at com.kyc.MainApp.main(MainApp.java:45)

这里,这些是我在 pom.xml 中使用的依赖项:

        <dependency>
            <groupId>javax.xml.soap</groupId>
            <artifactId>javax.xml.soap-api</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>jakarta.xml.soap</groupId>
            <artifactId>jakarta.xml.soap-api</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.ws</groupId>
            <artifactId>jaxws-api</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>rt</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>jakarta.xml.ws</groupId>
            <artifactId>jakarta.xml.ws-api</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>WSIMPOTJAR</groupId>
            <artifactId>WSIMPOTJAR</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>

        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.5-b10</version>
        </dependency>

PS:我尝试了这些解决方案,但没有一个有效:

jakarta.xml.ws.spi.Provider:com.sun.xml.ws.spi.ProviderImpl 不是子类型 JDK 11; JAX-WS;未找到提供程序 com.sun.xml.internal.ws.spi.ProviderImpl 尽管定义了依赖项,但仍获取 java.lang.ClassNotFoundException:com.sun.xml.internal.ws.spi.ProviderImpl

java web-services soap
1个回答
0
投票

请从 pom.xml 中的

jaxws-api:2.1
中删除此依赖项。

    <dependency>
        <groupId>javax.xml.ws</groupId>
        <artifactId>jaxws-api</artifactId>
        <version>2.1</version>
    </dependency>

这导致了问题。

原因: 此依赖项

jaxws-rt:4.0.0
具有此类
com.sun.xml.ws.spi.ProviderImpl
,它扩展了
jakarta.xml.ws.spi.Provider
依赖项中存在的
jakarta.xml.ws-api:4.0.0

您必须提供正确的

Provider
类,即
jakarta.xml.ws.spi.Provider

© www.soinside.com 2019 - 2024. All rights reserved.