¿Por qué JAXB no puede encontrar mi jaxb.index cuando se ejecuta dentro de Apache Felix?

Está justo ahí, en el paquete que debería estar indexando. Aún así, cuando llamo

<code>JAXBContext jc = JAXBContext.newInstance("my.package.name");
</code>

Tengo una excepción JAXBException que dice

"my.package.name" no contiene ObjectFactory.class o jaxb.index

aunque sí contiene ambos.

Lo que funciona, pero no es exactamente lo que quiero, es

<code>JAXBContext jc = JAXBContext.newInstance(my.package.name.SomeClass.class);
</code>

Esta pregunta de varias otras personas aparece en algunas listas de correo y foros, pero aparentemente no obtiene respuestas.

Estoy ejecutando esto en OpenJDK 6, así que obtuve los paquetes fuente y puse mi depurador en la biblioteca. Comienza por buscar jaxb.properties, luego busca las propiedades del sistema y, al no encontrar ninguna, intenta crear el contexto predeterminado utilizando com.sun.internal.xml.bind.v2.ContextFactory. Allí, la Excepción es lanzada (dentroContextFactor.createContext(String ClassLoader, Map)), pero no puedo ver lo que está pasando porque la fuente no está aquí.

ETA:

A juzgar por el código fuente de ContentFactory, encontréaquí, esta es probablemente la pieza de código que no funciona como se esperaba:

<code>/**
 * Look for jaxb.index file in the specified package and load it's contents
 *
 * @param pkg package name to search in
 * @param classLoader ClassLoader to search in
 * @return a List of Class objects to load, null if there weren't any
 * @throws IOException if there is an error reading the index file
 * @throws JAXBException if there are any errors in the index file
 */
private static List<Class> loadIndexedClasses(String pkg, ClassLoader classLoader) throws IOException, JAXBException {
    final String resource = pkg.replace('.', '/') + "/jaxb.index";
    final InputStream resourceAsStream = classLoader.getResourceAsStream(resource);

    if (resourceAsStream == null) {
        return null;
    }
</code>

De mianterior experienciaSupongo que esto tiene que ver con los mecanismos de carga de clases del contenedor OSGi en el que se está ejecutando. Desafortunadamente, todavía estoy un poco fuera de mi alcance aquí.

Respuestas a la pregunta(10)

Su respuesta a la pregunta