2009-05-22 2 views
26

Я получаюКак использовать файл jaxb.index?

javax.xml.bind.JAXBException: "org.example.mypackage" doesnt contain ObjectFactory.class or jaxb.index 

при попытке создать JAXBContext с помощью JAXBContext.newInstance(String contextPath). Я предполагаю, что существует «обычный» способ создания и поддержки файла jaxb.index.

ответ

4

Убедитесь, что вы передаете правильный класс методу. Предположим, что ваш корневой элемент XML является XMLRoot, вы могли бы назвать его как:

JAXBContext context = JAXBContext.newInstance(XMLRoot.class); 

Также убедитесь, что вы используете правильную версию компилятора JAXB (XJC) для версии Java вы работаете. Созданные JAXB классы из старого компилятора не будут работать должным образом с JAXB Java 6, давая ту же ошибку.

+0

Coleson @ Андрей - не вы хотите поместить имя packagae там, а не имя тега корневого элемента? – volvox

14

Попробуйте этот путь,

JAXBContext context = JAXBContext.newInstance(new Class[] {your.package.Test.class}); 

Кроме того, убедитесь, что вы добавили @XmlRootElement к классу Test.

@XmlRootElement 
class Test { 
    private String ...; 
    private int ......; 
} 

также убедитесь, что вы используете Java 1.5

35

Файл jaxb.index просто список классов в пакете, содержащих которые JAXB аннотации.

Каждая строка в файле представляет собой простое имя класса, а не его полное имя.

Вы можете прочитать здесь: http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html

+0

По классификации, вы имеете в виду полностью квалифицированное имя класса? 'Foo' будет именем класса, а' com.a.b.c.Foo' будет полностью квалифицированным именем класса. – Dojo

Смежные вопросы