gpt4 book ai didi

java - OSGi 中的传递依赖

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:52 26 4
gpt4 key购买 nike

我在运行时得到一个 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 不应该使用 list 中的信息来设置包类路径吗?或者在最坏的情况下,BND 不应该检测 3 对 1 的依赖并在 3 的 list 中导入包 A 吗?

我所有的 bundle 都是active 并且我没有uses constraint violations

最佳答案

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

关于java - OSGi 中的传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13870275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com