2017-04-17 95 views
0

目前我正在使用osgi和karaf。no osgi準備好依賴關係

我的問題是沒有「osgi就緒」依賴關係,這意味着一個jar沒有準備好作爲一個包被部署到karaf中。

我嘗試了兩種解決方案,以解決這類問題:

  • 我試圖用「嵌入的依賴」,這將包括JAR與項目
    依賴......我不要認爲這可能是一個解決方案 因爲當我嘗試嵌入罐子,它會問我,包括其他 罐子第一罐子依賴,等等..

  • 我試圖轉換使用bnd工具或fr將no「osgi ready」罐裝成捆綁包om從Eclipse項目中獲取「來自現有JAR存檔的插件」。 而這導致了同樣的結果,每個罐子將調用它依賴於它的另一個JAR ..

我不知道如果我做了錯誤的方式或者是什麼的問題完全一樣。 任何提示如何處理沒有osgi準備依賴?

回答

3

最簡單的啓動方式是使用wrap:協議自動創建一個jar。在幕後它使用bnd來動態創建一個包。簡單地將pre wrap:包裝到jar的mvn url中。

當您嘗試使用bundle安裝jar時:install -s wrap:mvn:... karaf會告訴您哪些導入的包丟失。以相同的方式安裝提供這些軟件包的罐子。罐子的罐子可以給你一個提示缺少的東西。

這可能意味着如果您的初始罐子有很多依賴關係,則需要安裝大量的罐子。

一旦您有一個可以一起安裝的罐子的列表,您可以使用wrap協議創建一個功能,也可以在構建時從個人生成捆綁。

無論如何你應該去看看servicemix bundles。它爲許多庫提供OSGi ready捆綁包。

+0

感謝您的答案,但在我做了osgified捆綁後,我總是得到一個java.lang.NoClassDefFoundError。 在此之前,我有很多例外的類沒有找到,我解決了導出所需的軟件包。 – larnouch