【问题标题】:migration from jdk 8 to jdk 11 cxf generated sources unknown imports从 jdk 8 迁移到 jdk 11 cxf 生成来源未知的导入
【发布时间】:2019-05-12 15:09:10
【问题描述】:

我正在从 java 8 迁移到 11,但在启动 springboot 服务器时遇到问题:

嵌套异常是 java.lang.NoClassDefFoundError: javax / jws / WebService。

我在我的 pom.xml 中使用过:

maven-compiler 3.8.0
cxf.version 3.3.0-SNAPSHOT

编译顺利但服务器启动不成功 谢谢

【问题讨论】:

    标签: java migration cxf


    【解决方案1】:

    JAX-WS 是提供javax.jws.WebService 和相关类的库。它作为 Java SE 8 到 10 的一部分提供,但在 Java 11 中被删除。您需要将该库作为外部依赖项获取。

    如果你使用 maven,你应该可以在 pom.xml 中添加对 com.sun.xml.ws:jaxws-ri:<current-version> 的依赖:

    <dependencies>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-ri</artifactId>
            <version>2.3.1</version>
        </dependency>
    </dependencies>
    

    【讨论】:

    • 谢谢,我现在有另一个问题:原因:javax.xml.bind.JAXBException:在模块路径或类路径上找不到 JAXB-API 的实现。 - 带有链接异常:[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
    • 我的 jaxb 和 jaxws 依赖项是:javax.xml.bind:jaxbapi:2.3.1 org.glassfish.jaxb:jaxb-runtime:2.3.1 com.sun.xml.bind:jaxb-core2 .3.1 com.sun.xml.bind:jaxb-impl:2.3.1 com.sun.xml.ws:jaxws-ri:2.3.0 javax.annotation:javax.annotation-api:1.3.1
    • 您的依赖项的原始版本可能不完整。我不得不添加&lt;type&gt;pom&lt;/type&gt;,因为它不是存储库中的 jar。
    • 嗯。我不这么认为。 &lt;type&gt;pom&lt;/type&gt; 似乎更适合&lt;dependencyManagement&gt; 部分(stackoverflow.com/questions/11778276/…)。我有一个使用这个依赖规范运行的 HelloWorld 示例。通常,Maven 依赖项不需要指定 &lt;type&gt;
    • 你也可以使用 jaxws-rt 代替。见stackoverflow.com/questions/5401358/… 那么你就不需要type:pom了。
    【解决方案2】:

    如果 Andrew 的回答不起作用,这会为我解决:

    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.3.3</version>
    </dependency>
    

    这是 runtime 依赖而不是参考实现 - 请参阅 this question 了解更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      相关资源
      最近更新 更多