Pergunta

im tendo um problema ClassLoader. Desde im completamente um newby osgi, espero que a resposta não é tão difícil:)

Eu acho que tem a ver com Compilar vs. Runtime bibliotecas. no Netbeans 6.7.1 propriedades do projeto, as libs compiletime sempre são propagadas para as outras categorias .. por isso não posso diferenciar lá.

Ao compilar o FelixHost os próximos frascos são usados ??

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

Mas quando executado, o quadro irá carregar uma implementação para OBR. Este pacote OBR também contém as definições de interface. Eu acho que é por isso que há uma ClassCastException ..

Na verdade, eu quero que o FelixHost para trabalhar em conjunto com OBR fazer alguma inicial provisionamento ..

Todas as idéias são bem-vindas.

Foi útil?

Solução

Eu suponho que por "FelixHost" você está se referindo ao seu projeto que é encapsular e lançamento do quadro Felix.

O problema é que você tem que ser um pouco cuidadoso sobre a fronteira entre o "mundo OSGi" e "mundo não-OSGi". Tudo o que você colocar no classpath para FelixHost exterior (ou seja, também todas as dependências de tempo de compilação no seu caso) é, essencialmente, vivendo do mundo do OSGi, por isso não é aconselhável a utilização de pacotes como "osgi.service.obr-1.0.2.jar" nesse caminho.

Como você disse, se a estrutura OSGi também carrega o "osgi.service.obr-1.0.2.jar" pacote que você vai entrar em ClassCastException porque você tem basicamente duas versões das mesmas classes (interfaces).

Uma possível solução para este problema é separar a lógica de provisionamento inicial em um pacote separado e fazer o trabalho relacionado OBR de dentro do mundo da OSGi . Depois, você pode remover a dependência de compilação de FelixHost em "osgi.service.obr-1.0.2.jar" e só tem uma cópia de interfaces OBR carregados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top