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.