Java 11 с Gradle: должен указывать абсолютный путь, но это $ {tools.jar} - PullRequest
0 голосов
/ 09 ноября 2019

Мы переходим с Java 8 на 11 в проекте, использующем jaxb. Поскольку он был удален из JDK, он должен быть включен отдельно, что я сделал через конфигурацию Gradle:

compile("javax.xml.bind:jaxb-api:2.2.11")
compile("com.sun.xml.bind:jaxb-core:2.2.11")
compile("com.sun.xml.bind:jaxb-impl:2.2.11")

Я могу запустить проект, однако gradle-задание compileJava выдает ошибки:

Errors occurred while build effective model from C:\Users\.\.gradle\caches\modules-2\files-2.1\com.sun.xml.bind\jaxb-core\2.2.11\db0f76866c6b1e50084e03ee8cf9ce6b19becdb3\jaxb-core-2.2.11.pom:
'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} in com.sun.xml.bind:jaxb-core:2.2.11
Errors occurred while build effective model from C:\Users\.\.gradle\caches\modules-2\files-2.1\com.sun.xml.bind\jaxb-impl\2.2.11\2d4b554997fd01d1a2233b1529b22fc9ecc0cf5c\jaxb-impl-2.2.11.pom:
'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} in com.sun.xml.bind:jaxb-impl:2.2.11

Работа завершается, и создается jar-файл, однако при запуске на рабочем сервере он останавливается с этой ошибкой:

java.lang.NoClassDefFoundError: javax/xml/bind/Unmarshaller$Listener

Я использую Spring Boot v1.5.6 и gradle 4.80,1

1 Ответ

1 голос
/ 10 ноября 2019

Решение состоит в том, чтобы использовать более новую версию библиотек jaxb. 2.3.0 больше не использует tools.jar.

...