我是OSGi的新手,並且正在使用Equinox。我已經做了幾次搜索,並且無法找到答案。在OSGI - handling 3rd party JARs required by a bundle的討論有所幫助,但並沒有完全回答我的問題。OSGi bundle從非捆綁包jar包導入包:爲它們創建捆綁包?
我已經獲得了一個jar文件rabbitmq-client.jar
,它已經打包爲一個OSGi包(Bundle-Name和其他MANIFEST.MF中的這些屬性),我希望將它作爲一個包進行安裝。該罐從commons-io-1.2.jar
進口包裝org.apache.commons.io
和org.apache.commons.io.input
。 RabbitMQ客戶端2.7.1發行版也包含commons-cli-1.1.jar
,所以我認爲它也是必需的。
我檢查了這些常見罐子的清單,發現它們看起來並沒有打包成捆。也就是說,他們的清單沒有任何標準的捆綁特性。
我的具體問題是:如果我將rabbitmq-client.jar
作爲捆綁安裝,訪問需要從commons jar中導入的包的正確方法是什麼?我能想到的只有三種選擇,無需重建rabbitmq-client.jar
。
- 來自commons jars的軟件包已包含在Equinox全局類路徑中,並且
rabbitmq-client.jar
將從那裏自動獲取它們。 - 我必須用兩個commons jar創建另一個bundle,導出所需的軟件包,並在Equinox中安裝該軟件包。
- 當我啓動Equinox時,必須將這兩個commons jar放在全局類路徑中,並且從那裏可以使用
rabbitmq-client.jar
。
我讀過一個通常不使用OSGi容器中的全局類路徑。我不清楚全局類路徑中的項是否在構建單獨的束類路徑時可用。但是,我注意到rabbitmq-client.jar
也導入了其他包,例如javax.net
,我認爲它來自全局類路徑。還是有一些其他的捆綁出口呢?
感謝您的幫助!
謝謝,@neil,這有幫助。我已經閱讀了一些OSGi教程,但沒有完全回答這些問題。我想我會在OSGi新手上徘徊一段時間,直到我弄明白爲止。 –