【问题标题】:Equinox Bundle import conflictEquinox Bundle 导入冲突
【发布时间】:2009-09-23 04:56:36
【问题描述】:

1) Bundle A 重新导出 com.X 包,它从Bundle C 中获得


2) Bundle B 导出包 com.X


3) 现在bunlde D 依赖于A 和B。


捆绑包 D 将从哪里获取包 com.X?

【问题讨论】:

    标签: osgi bundle equinox


    【解决方案1】:

    第一个问题是为什么您有 2 个捆绑包定义了同一个包 - 这称为拆分包,不建议这样做,因为您可能会遇到阴影问题。

    使用Import-Package,运行时将选择捆绑 A 或 B 来解决包依赖关系,您无法直接控制它(您可以通过在导出上设置强制属性来执行各种技巧,例如 Eclipse 家伙所做的)。

    使用Require-Bundle,您最终会得到一个合并的com.X 包,因此您会看到类型的超集,但我不确定如果您有重叠类型会发生什么。

    最简单的事情是首先避免拆分包。

    【讨论】:

    • 感谢 steven,您的回答很有帮助。您提到:“像 Eclipse 家伙通过在导出上设置强制属性来做的各种技巧”......您能说出这些技术是什么吗?谢谢。
    • 当一个包导出一个包时,它可以选择指定额外的键/值对(它们可以是你想要的任何东西)。这些额外的键/值对可以标记为强制的,因此其他捆绑包只有在它们也指定相同的键/值对时才能执行 Import-Package。一些 Eclipse 包使用这种技术,因为它们有拆分包,但我相信这更像是一个遗留问题,你应该尽可能避免它。
    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 2014-02-04
    • 2013-01-08
    • 2018-12-26
    • 1970-01-01
    • 2021-06-06
    • 2019-05-18
    相关资源
    最近更新 更多