通过另一个包加载OSGi包

通过另一个包加载OSGi包,osgi,jbossfuse,Osgi,Jbossfuse,我遇到了一个问题,我的一个包通过另一个包加载,即使这两个包之间没有任何直接依赖关系。下面是一个场景 我有三包。捆绑A、B和C。流程为A->B->C。因此A和C之间没有依赖关系 当我部署这3个包时,出于某种原因,bundle C是通过bundle A加载的。我使用Jboss Fuse并通过karaf控制台,当我在bundle A上执行dev:show tree时,它显示连接到bundle A的bundle C 如果我删除了bundle A,bundle C将自行加载,并且我也不会得到任何错误 我已

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

我有三包。捆绑A、B和C。流程为A->B->C。因此A和C之间没有依赖关系

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

如果我删除了bundle A,bundle C将自行加载,并且我也不会得到任何错误

我已经检查了features.xml文件和pom,查看它们是否有任何依赖关系,但没有找到任何内容


是否有人对我可以尝试的其他内容有任何想法,或者我遗漏了什么?

也许您在捆绑包A中有一个可选的导入包,由捆绑包C导出。请看一下包:导出和捆绑包:标题。

看起来像是纯粹的传递依赖关系。从OSGI in action手册的“2.5.3代码可见性”部分,这里是可传递依赖项的定义。 “当bundle A依赖于包时,会出现可传递依赖关系 从bundle B到bundle B依次取决于bundle C中的包的使用 捆绑包A,您需要解决捆绑包B和捆绑包C的依赖关系。”

您的bundle A可能会公开一个版本比bundle C使用的没有版本的包更高的包

问候,,
戈帕尔

谢谢。问题是捆绑包C正在导出包,而它应该导入包。导出的包也通过捆绑包B导出。