2009-05-22 13 views
26

Sto diventandoCome si usa un file jaxb.index?

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

durante il tentativo di creare un JAXBContext utilizzando JAXBContext.newInstance(String contextPath). Sto indovinando c'è un modo "normale" per creare e mantenere un file jaxb.index.

risposta

4

Assicurati di passare la classe corretta al metodo. Assumendo che il principale elemento XML è XMLRoot, si chiamerebbe come:

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

anche assicurarsi che si sta utilizzando la versione corretta del compilatore JAXB (xjc) per la versione di Java si sta eseguendo. Le classi generate dal JAXB del vecchio compilatore non funzioneranno correttamente con JAXB di Java 6, dando lo stesso errore.

+0

@Andrew Coleson - non si vuole mettere il nome packagae in là, non il nome del tag dell'elemento radice? – volvox

14

Prova in questo modo,

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

Inoltre, assicurarsi che è stato aggiunto il @XmlRootElement alla classe di test.

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

anche fare in modo che si sta utilizzando Java 1.5

35

Il file jaxb.index è solo un elenco delle classi del pacchetto contenente che hanno annotazioni JAXB.

Ogni riga nel file è un nome semplice di classe, non il suo nome completo.

Si può leggere di più qui: http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html

+0

Per classificazione si intende il nome completo della classe? 'Foo' sarebbe il nome della classe e' com.a.b.c.Foo' sarebbe il nome completo della classe. – Dojo