繁体   English   中英

OSGi中的传递依赖

[英]Transitive dependencies in OSGi

我在运行时得到一个NoClassDefFoundError ,我认为"uses"指令会避免这种情况,因为我认为它创造了传递性(如果我错了,请纠正我)。 这是我的配置:

Bundle 1 
  Export-package A

Bundle 2 
  Export-package B, uses "A"
  Import-package A

Bundle 3
  Import-package B

现在,当Bundle 3调用B中的一个类时会发生异常,而B又调用A中的类。 基于控制台,我可以看到BundleClassLoader在bundle 3中查找类(换句话说,就其本身而言),但在Bundle 1中找不到它。 如果我强制BND导入捆绑3中的A一切正常,但它看起来太费力了。 我觉得我错过了什么。 equinox不应该使用清单中的信息来设置bundle classpath吗? 或者在最坏的情况下,BND不应该检测3对1的依赖关系并在3的清单中导入包A?

我的所有捆绑包都是active ,我没有uses约束违规

捆绑2也必须导入A.使用A表示任何导入我的B并且还导入A的捆绑包必须导入与我相同的A. 由于bundle 2不导入A,因此不起作用。 此外,捆绑3需要导入A,因为B使用A.任何B的导入者也是A的用户,因此必须导入A.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM