2009-05-22 9 views
26

Ich erhalteWie verwende ich eine jaxb.index-Datei?

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

während ein JAXBContext mit JAXBContext.newInstance(String contextPath) zu schaffen versuchen. Ich vermute, dass es eine "übliche" Möglichkeit gibt, eine jaxb.index-Datei zu erstellen und zu pflegen.

Antwort

4

Stellen Sie sicher, dass Sie die richtige Klasse an die Methode übergeben. Ihre XML-Wurzelelement Unter der Annahme XmlRoot, können Sie es als nennen würde:

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

Auch stellen Sie sicher, dass Sie die richtige Version des JAXB-Compiler (xjc) für die Java-Version Sie laufen verwenden. JAXB-generierte Klassen aus dem alten Compiler funktionieren nicht korrekt mit JAXB von Java 6, was den gleichen Fehler ergibt.

+0

@ Andrew Coleson - würden Sie nicht wollen es den packagae Namen setzen in, nicht das Root-Element Tag-Namen? – volvox

14

auf diese Weise versuchen,

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

Auch stellen Sie sicher, dass Sie die @XmlRootElement auf dem Prüfstand Klasse hinzugefügt.

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

auch sicherstellen, dass Sie Java verwenden 1.5

35

Die jaxb.index Datei ist nur eine Auflistung der Klassen in der enthaltenden Paket, das JAXB Anmerkungen haben.

Jede Zeile in der Datei ist der einfache Name einer Klasse, nicht ihr voll qualifizierter Name.

können Sie mehr hier lesen: http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html

+0

Nach klassifizierten, meinst du einen voll qualifizierten Klassennamen? 'Foo' wäre Klassenname und' com.a..c.c.Foo' wäre ein vollständig qualifizierter Klassenname. – Dojo