【发布时间】:2012-12-13 23:20:00
【问题描述】:
我在运行时收到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 中的类,而后者又调用 A 中的类时,就会发生异常。基于控制台,我可以看到 BundleClassLoader 在 bundle 3 中寻找类(换句话说,在它本身),但不是在它会找到它的 Bundle 1 中。如果我强制 BND 在 Bundle 3 中导入 A 一切正常,但它看起来太费力了。我觉得我错过了一些东西。 Equinox 不应该使用清单中的信息来设置捆绑类路径吗?或者在最坏的情况下,BND不应该检测3对1的依赖并在3的清单中导入包A吗?
我所有的捆绑包都是active,我没有uses 约束违规
【问题讨论】: