Я использую JAXB в проекте Java с использованием JDK 8. После перехода на JDK 11 имя пакета JAXB больше не распознается. Я также не нашел способа добавить JAXB в качестве зависимости в gradle. Как я могу импортировать JAXB в свой проект?
Как я могу импортировать JAXB в проект Java 11 IntelliJ (Gradle)?
Ответы (1)
Вам нужно включить JAXB API и выбрать одну из реализаций JAXB, потому что JAXB больше не включен по умолчанию в JDK 11. Вам нужно добавить некоторые зависимости к вашему build.gradle
.
Итак, сначала:
compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
а если вы решите использовать например MOXy, то что-то вроде:
compile group: 'org.eclipse.persistence', name: 'org.eclipse.persistence.moxy',
version: '2.7.3'
См. также это замечательное объяснение а>
В этом примере с использованием MOXy также требуется jaxb.properties
файл, содержащий информацию о JAXBContextFactory
(см. здесь глава 2.1):
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
Преимущество этого выглядит следующим образом:
Поскольку вам не нужно изменять какой-либо код приложения, вы можете легко переключаться между различными реализациями JAXB.
person
pirho
schedule
05.01.2019
@MerajHussain Вы были правы. Это не сработает, как в моем первоначальном ответе. Я обновил свой ответ, чтобы содержать больше информации.
- person pirho; 17.12.2019
как добавить свойство jaxb в build.gradle?
- person Meraj Hussain; 18.12.2019
@MerajHussain Вы не добавляете его в градиент. Это файл, который должен находиться в том же пакете, что и пакеты вашей модели без сортировки. Если вы хотите использовать реализацию Sun, вы можете увидеть необходимые зависимости (на основе Maven, но думаю, это одно и то же) здесь
- person pirho; 18.12.2019
@MerajHussain выше ваши модельные пакеты означает более конкретный пакет, в котором находятся ваши модельные классы, поэтому кажется, что каждому пакету нужен свой собственный
- person pirho; 18.12.2019