Question

im ayant un problème de ClassLoader. Depuis im tout à fait une Newby osgi, espérons que la réponse est pas difficile:)

Je pense qu'il doit faire avec Compile par rapport à des bibliothèques d'exécution. dans Netbeans 6.7.1 propriétés du projet, les libs compiletime sont toujours propagées aux autres catégories .. donc je ne peux y faire la différence.

Lors de la compilation du FelixHost les prochains pots sont utilisés

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

Mais lors de l'exécution, le cadre se charge d'une mise en œuvre pour OBR. Ce paquet contient également OBR les définitions d'interface. Je pense que c'est la raison pour laquelle il y a un ClassCastException ..

Je veux vraiment le FelixHost de travailler ensemble avec OBR de faire quelques initiale provisionnement ..

Toutes les idées sont les bienvenues.

Était-ce utile?

La solution

Je suppose que par « FelixHost » vous faites référence à votre projet et le lancement est encapsuler le cadre Felix.

Le problème est que vous devez être un peu prudent sur la frontière entre le « monde OSGi » et « monde non OSGi ». Tout ce que vous mettez sur le chemin de classe pour FelixHost (c.-à-aussi toutes les compiler les dépendances de temps dans votre cas) vit essentiellement en dehors du monde OSGi, il est donc déconseillé d'utiliser des faisceaux comme « osgi.service.obr-1.0.2.jar » de cette façon.

Comme vous l'avez si le cadre OSGi charge également le « osgi.service.obr-1.0.2.jar » bundle vous obtiendrez en ClassCastException parce que vous avez essentiellement deux versions des mêmes classes (interfaces).

Une solution possible à ce problème est de séparer votre logique d'approvisionnement initial en un faisceau séparé et faire le travail lié OBR à l'intérieur du monde OSGi . Ensuite, vous pouvez supprimer la dépendance de compilation FelixHost sur « osgi.service.obr-1.0.2.jar » et seulement une copie des interfaces OBR chargées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top