Ответ 1
- Открыть [Файл → Настройки → Сборка, выполнение, развертывание → Компилятор]
- Добавить "--add-modules java.se.ee" в [Общие параметры VM процесса сборки]
Я попытался переключить проект на основе Scala/sbt на Java 9. Если я скомпилирую проект с помощью sbt, он работает.
Если я попытаюсь построить проект с опцией Build IntelliJ, я сразу же получу ошибку
Error:Module 'xyz' production: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Я попытался добавить модуль как зависимость
libraryDependencies += "javax.xml.bind" % "jaxb-api" % "2.3.0"
и добавлен в настройки компилятора IntelliJ (javac, а также компилятор scala)
<option name="ADDITIONAL_OPTIONS_STRING" value="--add-modules java.xml.bind" />
но не помогает, к сожалению.
Перемещение этого в качестве ответа, чтобы послужить временным предложением, если не будет определенного решения для него и соединить несколько других пунктов.
Похоже, scala еще не полный с точки зрения готовности к использованию с JDK-9 как видимый на scala/scala-dev - поддержка JDK 9
С другой стороны, способ решения зависимости от javax.xml.bind
можно разделить на две категории: -
В вашем проекте используется библиотека, которая, в свою очередь, requires javax.xml.bind
, и в этом случае в ваших руках не так много, кроме как ждать, пока эта библиотека перейдет к модульной структуре до вашей реструктуризации. Однако это может быть временно взломана опцией --add-modules javax.xml.bind
, предоставленной в качестве аргумента компилятора.
В вашем проекте используется javax.xml.bind
напрямую. В этом случае идеальным решением является переход от модуля и использование зависимости [jaxb-api:2.3.0
] и кода рефакто ра соответственно.
В дополнение к ответу @nullpointer, краткая инструкция по использованию --add-modules
Откройте File
→ Settings
→ Build, Execution, Deployment
→ Compiler
,
и добавьте --add-modules java.xml.bind
в Shared build process VM options