Привет всем, у меня есть код ниже, и в автономном проекте 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, который может определять пространство имен.