Pregunta

im tener un problema de cargador de clases. Desde im toda una Newby OSGi, es de esperar que la respuesta no es tan difícil:)

Creo que tiene que ver con Compilar vs bibliotecas de tiempo de ejecución. en NetBeans 6.7.1 propiedades del proyecto, las librerías en tiempo de compilación siempre se propagan a las otras categorías .. así que no pueden diferenciar allí.

Al compilar el FelixHost se utilizan los siguientes frascos

  • Felix.jar
  • osgi-core.jar
  • osgi-compendium.jar
  • osgi.service.obr-1.0.2.jar

Sin embargo, cuando se ejecuta, el marco se carga una implementación para OBR. Este paquete OBR también contiene las definiciones de interfaz. Creo que esto es por qué hay una ClassCastException ..

En realidad, quiero que el FelixHost a trabajar junto con OBR para hacer algunas inicial aprovisionamiento ..

Todas las ideas son bienvenidas.

¿Fue útil?

Solución

Asumo que por "FelixHost" se está refiriendo a su proyecto que está encapsulando y lanzar el marco Félix.

El problema es que usted tiene que ser un poco cuidadoso con el límite entre "mundo OSGi" y "mundo no OSGi". Todo lo que se pone en la ruta de clase para FelixHost (es decir, también todas compilar dependencias de tiempo en su caso) está fuera del mundo OSGi viviendo en esencia, lo que no es aconsejable el uso de paquetes como "osgi.service.obr-1.0.2.jar" De este modo.

Como usted ha señalado, si el marco OSGi también carga el "osgi.service.obr-1.0.2.jar" conjunto obtendrá en ClassCastException porque tiene esencialmente dos versiones de las mismas clases (interfaces).

Una posible solución a este problema es separar la lógica de aprovisionamiento inicial en un paquete separado y hacer el trabajo relacionado OBR desde dentro el mundo de OSGi . A continuación, puede eliminar la dependencia de compilación de FelixHost en "osgi.service.obr-1.0.2.jar" y sólo tienen una copia de interfaces OBR cargados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top