2013-07-22 98 views
3

我在導入OSGi包中的包時遇到問題。從OSGi包中的目標導入包

名爲org.semanticweb.HermiT.datatypes.xmlliteral的程序包包含在jar文件org.semanticweb.HermiT.jar中。這個jar包含在我的目標定義中,並在我的運行配置中選中。我的目標認爲它是一個OSGi包,所以這不應該是問題。當我嘗試在我自己的包中導入包時,出現錯誤,說沒有包導出包。任何人知道可能是什麼問題?

+0

您是否嘗試將它添加到'Manifest'的'Import-Package'標頭中?你在那裏找到那個包嗎? –

+0

是的,這就是我想要做的,但他似乎並沒有在那裏找到包。 – PieterDB

+0

包org.semanticweb.HermiT處於活動狀態嗎?你應該通過控制檯檢查它,如果不是的話。同時檢查該捆綁軟件是否導出了包含必要版本的軟件包。 –

回答

3

檢查「org.semanticweb.HermiT.jar」的標準下載,它沒有導出包。因此,JAR中的任何軟件包都不能被其他OSGI組件使用。

UPDATE:

的PAX-URL包裝插件可以幫你換你的非OSGi的JAR成一個OSGi包,並添加任意的清單線。

https://ops4j1.jira.com/wiki/display/paxurl/Wrap+Protocol

也可能有它們不包括出口型包裝的理由。您可能想要直接詢問創建者,以確保您不會遇到麻煩。

您也可以更新您擁有的JAR,然後在部署時始終使用該JAR。實際上有一些TON選項。

你也可以看到這個項目是怎麼做的:

http://iks-project.googlecode.com/svn-history/r794/sandbox/kres/trunk/eu.iksproject.kres.shared/dependency/hermit124/pom.xml

他們創造一個pom.xml和使用Maven的捆綁插件提供自己的清單條目。

+0

好的,那是我懷疑的。有沒有辦法改變這個?我已經嘗試過改變MANIFEST.MF並添加導出的包。但它似乎很難再次使它成爲一個罐子.. – PieterDB

+0

你基本上必須''包裝'作爲一個有效的osgi包的罐子。編輯:哎呀,打回車。我會更新我的答案。 –

+0

實際上,一個jar文件只是一個ZIP文件,所以再次製作一個jar文件很容易。你可能會使哈希不匹配,但我不是100%確定這是一個問題。 –