JAXB тот же код, другое поведение

Привет всем, у меня есть код ниже, и в автономном проекте unmarshall работает отлично, а код, вставленный в другой проект, я получаю сообщение об ошибке.

Код:

JAXBContext jaxbContext = JAXBContext.newInstance(Form.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Form form = (Form) jaxbUnmarshaller.unmarshal(new StringWriter(xmlstring));

Ошибка:

javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Form"). Expected elements are <{http://www.site1.pt/}Form>

Странная вещь - это пространство имен (http://www.site1.pt/), которое я не использую в коде формы, но использую в других частях моего другого проекта, так почему, когда я помещаю эту часть кода в свой другой проект, он принимает пространство имен?

У меня есть пакет под названием pt.interfaces, в котором есть файл package-info.java. У меня не было информации о пакете в моем пакете pt.interfaces.form.

Я попытался создать package-info.java в моем пакете pt.interfaces.form, и если я изменю пространство имен (http://www.test.pt/), ошибка изменится:

javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Form"). Expected elements are <{http://www.test.pt/}Form>

Если в моем package-info.java (pt.interfaces.form) я ничего не меняю "" пространство имен или удаляю его, я не получаю ошибки, но объект не имеет значений xml.

Есть идеи? Спасибо

Проверьте, есть ли package-info.java в соответствующем пакете в первом или втором проекте. package-info.java может содержать @XmlSchema, который может определять пространство имен.

lexicore 19.05.2018 09:18

Спасибо за лексикон повторов. Я объясню в ответ!

Rodrigo Rapozo 19.05.2018 12:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
38
0

Другие вопросы по теме