2015-12-19 75 views
0

我在基於Bndtools的Eclipse中有兩個不同的項目。 第一個產生具有以下明顯的一個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 ......爲什麼第一個不會在啓動時拋出這個錯誤?

謝謝, 保羅。

+0

我解決了在Bndtools的運行描述符(Eclipse插件)中添加osgi.cmpn作爲運行需求的錯誤。但是我不明白爲什麼在第一個項目中不需要爲ServiceTracker使用相同的osgi compendium bundle。 – ppatierno

回答

0

請參閱this question。切勿在OSGi中部署簡編jar。相反,你需要一個實現你所依賴的規範的包。

在你的情況下,你需要一個配置管理服務impl。有來自felix和eclipse的實現。兩者都包含api。

+0

你是對的......我想念配置管理服務impl。現在刪除彙編包它很好用:-) – ppatierno