У меня есть два разных проекта в 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.
Я решил ошибку, добавив osgi.cmpn как требования Run в дескрипторе запуска Bndtools (плагин для Eclipse). Однако я не понимаю, почему это не требуется в первом проекте, где для ServiceTracker используется один и тот же комплект compendium osgi. – ppatierno