Как использовать файл jaxb.index?
Я получаю
javax.xml.bind.JAXBException: "org.example.mypackage" doesnt contain ObjectFactory.class or jaxb.index
при попытке создать JAXBContext
с помощью JAXBContext.newInstance(String contextPath)
. Я предполагаю, что существует "обычный" способ создания и поддержки файла jaxb.index.
Ответы
Ответ 1
Файл jaxb.index представляет собой список классов в содержащем пакете с аннотациями JAXB.
Каждая строка в файле представляет собой простое имя класса, а не его полное имя.
Вы можете прочитать больше здесь: http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html
Ответ 2
Попробуйте этот путь,
JAXBContext context = JAXBContext.newInstance(new Class[] {your.package.Test.class});
Кроме того,
убедитесь, что вы добавили @XmlRootElement
в класс Test.
@XmlRootElement
class Test {
private String ...;
private int ......;
}
также убедитесь, что вы используете java 1.5
Ответ 3
Убедитесь, что вы передаете правильный класс методу. Предполагая, что ваш корневой элемент XML является XMLRoot, вы бы назвали его следующим:
JAXBContext context = JAXBContext.newInstance(XMLRoot.class);
Также убедитесь, что вы используете правильную версию компилятора JAXB (xjc) для версии Java, в которой вы работаете. Созданные JAXB классы из старого компилятора не будут работать должным образом с Java 6 JAXB, что дает ту же ошибку.