OSGi Bundle通过另一个包加载

时间:2015-02-08 11:28:19

标签: osgi jbossfuse

我遇到的问题是,我的一个捆绑包正在通过另一个捆绑包加载,即使这两个捆绑包之间没有任何直接依赖关系。这是场景。

我有3个捆绑包。捆绑A,B& C.工艺流程是A-> B-> C.因此,A& A之间没有依赖关系。 C.

当我部署这3个时,由于某种原因,捆绑包C通过捆绑包A加载。我使用Jboss Fuse并通过karaf控制台,当我在捆绑包A上执行dev:show-tree时,它显示捆绑C连接到捆绑A。

如果我删除了捆绑包A,捆绑包C会自行加载,我也不会收到任何错误。

我已经检查了两个A&的features.xml文件和pom。 C看他们是否有任何依赖,但找不到任何东西。

有没有人对我可以尝试的其他方面有什么想法,或者有什么我想念的东西?

2 个答案:

答案 0 :(得分:0)

也许您在捆绑包A中有一个可选的Import-Package,它由捆绑包C导出。查看包:exports和bundle:headers。

答案 1 :(得分:0)

看起来像Transitive依赖的纯粹案例。来自OSGI的行动书" 2.5.3代码可视性"部分,这里是传递依赖的定义。 "当捆绑包A依赖于包时,会发生传递依赖性 从捆绑包B和捆绑包B依次取决于捆绑包C的包。使用 bundle A,你需要解决bundle B和bundle C的依赖关系。"

您的捆绑包A可能会暴露出比捆绑C使用的捆绑包更高版本的包裹。

此致 戈帕尔