作者:yyjj7212 | 来源:互联网 | 2023-01-17 09:46
我试图将我的基于Scala/sbt的项目切换到Java 9.如果我使用sbt编译项目,它可以工作.
如果我尝试使用IntelliJ的Build选项构建项目,我会立即得到错误
Error:Module 'xyz' production: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
我试图将模块添加为依赖项
libraryDependencies += "javax.xml.bind" % "jaxb-api" % "2.3.0"
并添加到IntelliJ的编译器设置中(javac以及scala编译器)
但不幸的是,没有帮助.
1> 小智..:
打开[ 文件 - >设置 - >构建,执行,部署 - >编译器 ]
将" --add-modules java.se.ee " 添加到[ Shared build process VM options ]
如果我没有Intellij但正在使用sbt怎么办?
2> Naman..:
把它作为一个临时建议的答案,除非有一个明确的解决方案,并将其他几点联系在一起.
似乎scala尚未完成,因为在scala/scala-dev中可以看到与JDK-9一起使用的准备就绪- 支持JDK 9
另一方面,解决依赖性的javax.xml.bind
方式目前可分为两类: -
您的项目使用了一个库requires javax.xml.bind
,在这种情况下,除了在重组之前等待该库移动到模块化结构之外,您手中没有太多东西.但是,这可以通过--add-modules javax.xml.bind
作为编译器参数提供的选项暂时被攻击.
您的项目javax.xml.bind
直接使用.在这种情况下,理想的解决方案是远离模块并相应地使用依赖[ jaxb-api:2.3.0
]和重构代码.