2009-08-10 4 views
0

im с проблемой ClassLoader. С тех пор, как я довольно osgi newby, надеюсь, ответ не такой уж сложный :)OSGi в Netbeans, ClassCastException при получении службы

Я думаю, что это связано с библиотеками Compile vs. Runtime. в свойствах проекта Netbeans 6.7.1, библиотеки compiletime всегда распространяются на другие категории. Поэтому я не могу различать их.

При составлении FelixHost следующие банки используются

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

Но при запуске структура загрузит реализацию для OBR. Этот комплект OBR также содержит определения интерфейсов. Я думаю, именно поэтому есть ClassCastException ..

я на самом деле хочу, чтобы FelixHost работать вместе с ОБР, чтобы сделать некоторые первоначальные инициализацию ..

Любые идеи приветствуются.

+0

Я нашел сайт Феликса дает конкретную информацию по этому вопросу: http://felix.apache.org/site/apache-felix-framework-launching-and-embedding.html#ApacheFelixFrameworkLaunchingandEmbedding-hostserviceusage – Houtman

ответ

1

Я предполагаю, что с помощью «FelixHost» вы ссылаетесь на свой проект, который инкапсулирует и запускает инфраструктуру Felix.

Проблема заключается в том, что вы должны быть немного осторожны в отношении границы между «OSGi world» и «non-OSGi world». Все, что вы ставите в classpath для FelixHost (т. Е. Также все компиляционные зависимости времени в вашем случае), по существу, живет вне мира OSGi, поэтому не рекомендуется использовать пакеты, такие как «osgi.service.obr-1.0.2.jar», в этом случае.

Как вы указали, если платформа OSGi также загружает пакет «osgi.service.obr-1.0.2.jar», вы попадете в ClassCastException, потому что у вас есть по существу две версии тех же классов (интерфейсов).

Одним из возможных решений этой проблемы является разделение вашей исходной логики инициализации на отдельный пакет и выполнение связанной с OBR работы из мира OSGi. Затем вы можете удалить зависимую от компиляции FelixHost на «osgi.service.obr-1.0.2.jar» и загрузиться только одна копия интерфейсов OBR.

+0

я действительно читал о это в спецификации, и, набирая вопрос, мне стало все более и более ясно. Спасибо за очень четкую информацию. Я уверен, что он также полезен для других новичков OSGi :) – Houtman

Смежные вопросы