2009-05-22 20 views
26

Me estoy¿Cómo uso un archivo jaxb.index?

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

al intentar crear un JAXBContext usando JAXBContext.newInstance(String contextPath). Supongo que hay una forma "habitual" de crear y mantener un archivo jaxb.index.

Respuesta

4

Asegúrese de estar pasando la clase correcta al método. Asumiendo que su elemento raíz XML es XmlRoot, que lo llamaría como:

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

También asegúrese de que está utilizando la versión correcta del compilador JAXB (xjc) para la versión de Java que se está ejecutando. Las clases generadas por JAXB del compilador antiguo no funcionarán correctamente con JAXB de Java 6, dando el mismo error.

+0

@ Andrew Coleson - no le gustaría poner el nombre packagae allí, no el nombre de la etiqueta elemento raíz? – volvox

14

Prueba este modo,

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

Además, asegúrese de que ha agregado el @XmlRootElement a la clase de prueba.

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

también asegurarse de que está utilizando Java 1.5

35

El archivo jaxb.index es sólo una lista de las clases del paquete que contiene que tienen anotaciones JAXB.

Cada línea del archivo es el nombre simple de una clase, no su nombre completo.

Puede leer más aquí: http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html

+0

Por clasificado, ¿te refieres al nombre completo de la clase? 'Foo' sería el nombre de clase y' com.a.b.c.Foo' sería un nombre de clase completamente calificado. – Dojo

Cuestiones relacionadas