我在導入OSGi包中的包時遇到問題。從OSGi包中的目標導入包
名爲org.semanticweb.HermiT.datatypes.xmlliteral
的程序包包含在jar文件org.semanticweb.HermiT.jar
中。這個jar包含在我的目標定義中,並在我的運行配置中選中。我的目標認爲它是一個OSGi包,所以這不應該是問題。當我嘗試在我自己的包中導入包時,出現錯誤,說沒有包導出包。任何人知道可能是什麼問題?
我在導入OSGi包中的包時遇到問題。從OSGi包中的目標導入包
名爲org.semanticweb.HermiT.datatypes.xmlliteral
的程序包包含在jar文件org.semanticweb.HermiT.jar
中。這個jar包含在我的目標定義中,並在我的運行配置中選中。我的目標認爲它是一個OSGi包,所以這不應該是問題。當我嘗試在我自己的包中導入包時,出現錯誤,說沒有包導出包。任何人知道可能是什麼問題?
檢查「org.semanticweb.HermiT.jar」的標準下載,它沒有導出包。因此,JAR中的任何軟件包都不能被其他OSGI組件使用。
UPDATE:
的PAX-URL包裝插件可以幫你換你的非OSGi的JAR成一個OSGi包,並添加任意的清單線。
https://ops4j1.jira.com/wiki/display/paxurl/Wrap+Protocol
也可能有它們不包括出口型包裝的理由。您可能想要直接詢問創建者,以確保您不會遇到麻煩。
您也可以更新您擁有的JAR,然後在部署時始終使用該JAR。實際上有一些TON選項。
你也可以看到這個項目是怎麼做的:
他們創造一個pom.xml和使用Maven的捆綁插件提供自己的清單條目。
好的,那是我懷疑的。有沒有辦法改變這個?我已經嘗試過改變MANIFEST.MF並添加導出的包。但它似乎很難再次使它成爲一個罐子.. – PieterDB
你基本上必須''包裝'作爲一個有效的osgi包的罐子。編輯:哎呀,打回車。我會更新我的答案。 –
實際上,一個jar文件只是一個ZIP文件,所以再次製作一個jar文件很容易。你可能會使哈希不匹配,但我不是100%確定這是一個問題。 –
您是否嘗試將它添加到'Manifest'的'Import-Package'標頭中?你在那裏找到那個包嗎? –
是的,這就是我想要做的,但他似乎並沒有在那裏找到包。 – PieterDB
包org.semanticweb.HermiT處於活動狀態嗎?你應該通過控制檯檢查它,如果不是的話。同時檢查該捆綁軟件是否導出了包含必要版本的軟件包。 –