【问题标题】:java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverterjava.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
【发布时间】:2017-08-15 11:11:36
【问题描述】:

安装 JDK9 后,我在运行 Scala 项目时遇到此异常。将 Scala 升级到 2.12.2 也没有解决我的问题。

【问题讨论】:

标签: java-9 scala-2.12


【解决方案1】:

可以在maven中添加依赖

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

【讨论】:

    【解决方案2】:

    要补充上一个答案,我想参考以下答案:https://stackoverflow.com/a/43574427/3751268。我认为它详细介绍了提供 jaxb 等库的所需方式。

    特别是对于 Scala,我将它添加到我的 libraryDependencies

    libraryDependencies += Seq("javax.xml.bind" % "jaxb-api" % "2.3.0")
    

    【讨论】:

      【解决方案3】:

      在模块路径上运行代码时,默认情况下不解析java.xml.bind 模块。这意味着如果您依赖 JAXB,那么您需要使用 --add-modules java.xml.bind 运行,或者在类路径(或模块路径)上部署 JAXB。

      更新:JDK 9 迁移指南的“Modules Shared with Java EE Not Resolved by Default”部分提供了有关此主题的更多信息。

      【讨论】:

      • --add-modules java.se.ee
      • 理论上这是解决方案,但是你如何要求scala/sbt在运行java时添加这个参数?
      • 你怎么看javaOptions in ThisBuild += "--add-modules=ALL-SYSTEM"
      • javaOptions in ThisBuild += "--add-modules=java.xml.bind" 会更好。请注意等号!使用 Java 版本“9.0.4”测试
      • @AeroWang 你找到问题的答案了吗?
      猜你喜欢
      • 2023-01-23
      • 2018-06-06
      • 2022-07-25
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 2017-09-20
      相关资源
      最近更新 更多