Я перенес свой проект на основе Maven на SpringBoot 2.0 и Java 9. В процессе мне пришлось добавить некоторые зависимости, чтобы избавиться от предупреждений Java 9 о модулях (которые все еще можно добавить с помощью --add-modules).
Однако я не могу избавиться от --add-modules java.xml.ws
. Как предложено в JEP 320, добавление зависимостей:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
Эти зависимости позволяют запустить mvn test
для запуска. Сборка из IntelliJ IDE тоже работает.
Однако при запуске приложения Spring Boot я получаю следующее исключение времени выполнения:
...
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:174)
... 64 more
Какие зависимости Maven мне не хватает? JarFinder говорит мне, что класс реализации часть jaxb-impl, но только до версии 2.2.12. Так куда же пропала эта реализация?