2009-05-22 7 views
26

Je reçoisComment utiliser un fichier jaxb.index?

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

tout en essayant de créer un JAXBContext en utilisant JAXBContext.newInstance(String contextPath). Je suppose qu'il existe un moyen "habituel" de créer et de maintenir un fichier jaxb.index.

Répondre

4

Assurez-vous de transmettre la bonne classe à la méthode. En supposant que votre élément racine XML est XMLRacine, vous appelleriez comme:

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

Assurez-vous également que vous utilisez la version correcte du compilateur JAXB (de xjc) pour la version de Java que vous utilisez. Les classes générées par JAXB à partir de l'ancien compilateur ne fonctionneront pas correctement avec JAXB de Java 6, donnant la même erreur.

+0

Coleson @ Andrew - ne vous voulez mettre le nom de packagae là-dedans, pas le nom de la balise d'élément racine? – volvox

14

Essayez cette façon,

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

En outre, assurez-vous que vous avez ajouté le @XmlRootElement à la classe de test.

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

aussi assurez-vous que vous utilisez Java 1.5

35

Le fichier jaxb.index est juste une liste des classes dans le paquet contenant les annotations qui ont JAXB.

Chaque ligne du fichier est le nom simple d'une classe, et non son nom complet.

Vous pouvez en lire plus ici: http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html

+0

En classifié, voulez-vous dire nom de classe pleinement qualifié? 'Foo' serait un nom de classe et' com.a.b.c.Foo' serait un nom de classe complet. – Dojo

Questions connexes