Saltar al contenido

JaxbRepresentation da error “no contiene ObjectFactory.class o jaxb.index”

Al fin luego de tanto batallar ya encontramos el resultado de esta contrariedad que ciertos usuarios de este espacio han presentado. Si deseas aportar algún dato no dejes de dejar tu información.

Solución:

En mi caso, pude resolver esto agregando un archivo llamado “jaxb.index” en la misma carpeta del paquete que la clase anotada JAXB. En ese archivo, enumere los nombres simples y no calificados de las clases anotadas.

Por ejemplo, mi archivo /MyProject/src/main/java/com/example/services/types/jaxb.index es simplemente una línea (ya que solo tengo una clase con tipo JAXB):

ServerDiagContent

que hace referencia a la clase com.example.services.types.ServerDiagContent

Para deshacerse de los archivos jaxb.index adicionales, puede usar la clase Java para instanciar el contexto:

http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/JAXBContext.html#newInstance(java.lang.Class…)

Por lo general, debe pasar una sola clase de Java porque otras clases son “accesibles estáticamente desde estas clases”, por lo que JAXB puede identificarlas.

Recibí este error debido a un problema de ClassLoader, y pude resolverlo pasando explícitamente el ClassLoader que JAXB debería usar, así que esto:

JAXBContext.newInstance(com.myexample.test.ObjectFactory.class.getPackage().getName());

dio un error, pero funcionó correctamente al usar:

JAXBContext.newInstance(com.myexample.test.ObjectFactory.class.getPackage().getName(),
                        com.myexample.test.ObjectFactory.class.getClassLoader());

que probablemente sea similar a la respuesta del usuario 3243752, apuesto a que JAXB elige automáticamente el ClassLoader de la clase pasada cuando usa la firma del método #newInstance(Class…classesToBeBound).

valoraciones y comentarios

Puedes defender nuestra tarea fijando un comentario o dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *