这些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
为什么提供者选择限制不能按照规范工作?