2015-02-08 55 views
0

我遇到了一個問題,即其中一個bundle正在通過另一個軟件包加載,即使這兩個軟件包彼此之間沒有任何直接依賴關係。這是場景。OSGi Bundle通過另一個軟件包獲得加載

我有3捆。捆綁A,B & C.處理流程是A-> B-> C。因此,存在一個& C.

當我部署這些3,則由於某種原因,束C通過束A.加載我使用JBoss保險絲並通過karaf控制檯,當我執行dev的之間不存在依賴關係:展示 - 它顯示捆綁包C連接到捆綁包A.

如果我刪除捆綁包A,捆綁包C會自行加載,我也不會收到任何錯誤。

我檢查了兩個A & C的features.xml文件和pom,看它們是否有任何依賴關係,但找不到任何東西。

有沒有人有任何想法我還可以嘗試還是有什麼,我失蹤?

回答

0

也許你在捆綁軟件A中有一個可選的導入軟件包,它是由軟件包C導出的。請看一下軟件包:exports和bundle:headers。

+0

感謝您的束A的可能性。問題是軟件包C正在導出軟件包,而它應該導入它們。導出的軟件包也由軟件包B導出。 – user451445 2015-02-08 22:49:48

0

看起來像傳遞依賴的純粹情況。從操作手冊的「2.5.3代碼可見性」部分中的OSGI,這裏是傳遞性依賴關係的定義。 「當包A依賴於從卷B和卷B又取決於包從包C.要使用 束一包 發生傳遞依賴,需要解決兩捆B的依賴關係,並捆綁C.」

有可能是暴露的更高版本的封裝比在其不存在的一個出現,這是由束C.使用

問候, 戈帕爾

相關問題