2015-12-19 3 views
0

У меня есть два разных проекта в Eclipse на основе Bndtools. Первый производит JAR со следующим манифестом:Необходим комплект для компаньона OSGi?

Manifest-Version: 1.0 
Bnd-LastModified: 1450251340248 
Bundle-Activator: org.osgi.tutorial.MessageCounterActivator3 
Bundle-ManifestVersion: 2 
Bundle-Name: org.osgi.tutorial 
Bundle-SymbolicName: org.osgi.tutorial 
Bundle-Version: 0.0.0.201512160735 
Created-By: 1.8.0_66 (Oracle Corporation) 
Import-Package: org.osgi.book.reader.api,org.osgi.framework;version="[1.3,2)",org.osgi.util.tracker;version="[1.4,2)" 
Private-Package: org.osgi.tutorial 
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))" 
Tool: Bnd-3.0.0.201509101326 

вторых имеют следующий манифест:

Manifest-Version: 1.0 
Bnd-LastModified: 1450536025075 
Bundle-Activator: org.osgi.book.configadmin.ServerConnectionActivator 
Bundle-ManifestVersion: 2 
Bundle-Name: org.osgi.book.configadmin 
Bundle-SymbolicName: org.osgi.book.configadmin 
Bundle-Version: 0.0.0.201512191440 
Created-By: 1.8.0_66 (Oracle Corporation) 
Import-Package: org.osgi.framework;version="[1.3,2)",org.osgi.service.cm;version="[1.3,2)" 
Private-Package: org.osgi.book.configadmin;version="1.0.0" 
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))" 
Tool: Bnd-3.0.0.201509101326 

Два проекта нуждается в osgi.cmpn: первый для ServiceTracker (пакет org.osgi. util.tracker), а второй для ManagedService (пакет org.osgi.service.cm).

Первый проект отлично работает: я устанавливаю и запускаю комплект без проблем. я могу установить пакет из второго проекта, но когда я начинаю его я получаю следующее сообщение об ошибке:

org.osgi.framework.BundleException: Unresolved constraint in bundle org.osgi.book.configadmin [6]: Unable to resolve 6.0: missing requirement [6.0] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.service.cm)(version>=1.3.0)(!(version>=2.0.0))) 

В чем проблема? Если для обоих проектов нужен osgi.cmpn JAR ... почему первый не бросает эту ошибку при запуске?

Thanks, Paolo.

+0

Я решил ошибку, добавив osgi.cmpn как требования Run в дескрипторе запуска Bndtools (плагин для Eclipse). Однако я не понимаю, почему это не требуется в первом проекте, где для ServiceTracker используется один и тот же комплект compendium osgi. – ppatierno

ответ

0

См. this question. Никогда не развертывайте баннер с компендиумом в OSGi. Вместо этого вам нужен пакет, который реализует спецификацию, от которой вы зависите.

В вашем случае вам понадобится служба config admin service. Существуют реализации от felix и от затмения. Оба содержат api.

+0

Вы абсолютно правы ... Я пропустил приложение config admin service. Теперь, удалив комплект компендиума, он отлично работает :-) – ppatierno

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