代码之家  ›  专栏  ›  技术社区  ›  Vogel612

eclipseosgi不处理清单中的提供者选择

  •  3
  • Vogel612  · 技术社区  · 6 年前

    这些maven工件通过 org.reficio:p2-maven-plugin

    a.foo . B依赖于A,将jar打包到工件中,包生成错误地将B标记为导出 a、 福

    所以到目前为止,我有以下两个清单.MF不受我控制的文件:

    A/清单.MF

    Bundle-Symbolic-Name: com.acme.A
    Bundle-Version: 2.0.0.[...]
    Export-Package: a.foo
    

    B/清单.MF :

    Bundle-Symbolic-Name: com.acme.B
    Bundle-Version: 2.0.0.[...]
    Export-Package: a.foo,
     b, b.bar, [...]
    

    Import-Package: a.foo 并用 uses="com.acme.A" . 如果不正确,输出也不会出现问题 a、 福 完全。

    所以我有一个捆绑包,这取决于a和B的情况。它的清单如下:

    Bundle-Symbolic-Name: org.foo.product
    Bundle-Version: 2.0.0
    Import-Package: a.foo,
     b, b.foo, [...]
    

    a、 福 B . 使用来自的类 a、 福 导致编译错误:

    忽略该编译错误并执行bundle将导致BundleException,因为导入 a、 福

    为了弥补这一点,我试图确定A作为 a、 福 将Import Package语句更改为:

    a.foo;
      bundle-symbolic-name="com.acme.A";
      bundle-version="[2.0.0,3)",
    

    根据 OSGI 7.0 Specification 3.7.10

    这确实将编译错误更改为显式缺少需求。Eclipse找不到包 有了限制。它也不能修复运行时错误。
    Eclipse建议一个快速修复来添加 Import-Package 声明 . 当我让eclipse这样做时,它只会删除提供者匹配器。

    当我明确地把 com.acme.A

    为什么提供者选择限制不能按照规范工作?

    0 回复  |  直到 6 年前