[英]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.