Два класса имеют одинаковое имя типа XML. Используйте @ XmlType.name и @ XmlType.namespace для присвоения им разных имен - PullRequest
0 голосов
/ 03 мая 2019

У меня есть 2 класса в формате .xsd с одинаковыми именами. Даже при том, что каждый из них находится под различным пространством имен:

Когда я пытаюсь слишком инициализировать JAXBContext, я получаю: Два класса имеют одинаковое имя типа XML «picture». Используйте @ XmlType.name и @ XmlType.namespace, чтобы назначать им разные имена. Информация: Запуск на java 11. и генерация классов с помощью xjc. Ранее это работало на Java 8

<xs:schema targetNamespace="http://test.com/bla/blabla/blablabla/sd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="picture">






<xs:schema targetNamespace="http://test.com/bla/blabla/blablabla/hd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="picture">

И оба сгенерированных класса выглядят так:

@ XmlRootElement (name = "picutre") общедоступный класс Изображение {}

Я инициализирую JAXBContext:

 private static JAXBContext initializeJaxbContext() {
    JAXBContext jaxbctx = JAXBContext.newInstance(com.test.bla.blabla.blablabla.hd.Picture.class,com.test.bla.blabla.blablabla.sd.Picture.class);

Почему я получаю эту ошибку? Два класса имеют одинаковое имя типа XML. Используйте @ XmlType.name и @ XmlType.namespace для присвоения им разных имен Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 07 мая 2019

Проблема заключалась в том, что среда выполнения jaxb находилась внутри файла war как транзитивная зависимость другого пакета.Решение состояло в том, чтобы исключить это в файле gradle и иметь все зависимости jaxb в папке lib tomcat.

...