Как я могу импортировать JAXB в проект Java 11 IntelliJ (Gradle)?

Я использую JAXB в проекте Java с использованием JDK 8. После перехода на JDK 11 имя пакета JAXB больше не распознается. Я также не нашел способа добавить JAXB в качестве зависимости в gradle. Как я могу импортировать JAXB в свой проект?


person David Sackstein    schedule 05.01.2019    source источник


Ответы (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
comment
@MerajHussain Вы были правы. Это не сработает, как в моем первоначальном ответе. Я обновил свой ответ, чтобы содержать больше информации. - person pirho; 17.12.2019
comment
как добавить свойство jaxb в build.gradle? - person Meraj Hussain; 18.12.2019
comment
@MerajHussain Вы не добавляете его в градиент. Это файл, который должен находиться в том же пакете, что и пакеты вашей модели без сортировки. Если вы хотите использовать реализацию Sun, вы можете увидеть необходимые зависимости (на основе Maven, но думаю, это одно и то же) здесь - person pirho; 18.12.2019
comment
@MerajHussain выше ваши модельные пакеты означает более конкретный пакет, в котором находятся ваши модельные классы, поэтому кажется, что каждому пакету нужен свой собственный - person pirho; 18.12.2019