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

я собираюсь

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

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


person loosenut    schedule 22.05.2009    source источник


Ответы (3)


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

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

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

person Rafael M    schedule 22.12.2010
comment
Под классифицированным вы подразумеваете полное имя класса? Foo будет именем класса, а com.a.b.c.Foo будет полным именем класса. - person Dojo; 18.12.2015

Попробуйте так,

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

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

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

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

person Hari    schedule 03.06.2010

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

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

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

person Andrew Coleson    schedule 05.06.2009
comment
@Andrew Coleson - разве вы не хотели бы поместить туда имя пакета, а не имя тега корневого элемента? - person volvox; 30.03.2010