为什么 bnd 认为我的捆绑包需要可选服务 (*, 0..n, ReferenceCardinality.MULTIPLE)?
Why does bnd figures my bundle REQUIRES optional services (*, 0..n, ReferenceCardinality.MULTIPLE)?
我的 bundle 定义了一个接口,以及一个使用该接口实现调用它们的组件(如果存在的话......)。
一个很好的类比是日志服务;如果存在一个(或多个),则通过消息调用它们。
这是我的 DS 声明:
@Reference(cardinality= ReferenceCardinality.MULTIPLE,
policy = ReferencePolicy.DYNAMIC,
service = ITestResultsParserService.class)
public void bindTestResultsParser(ITestResultsParserService parser) {
testResultsParserServices.add(parser);
}
public void unbindTestResultsParser(ITestResultsParserService parser) {
testResultsParserServices.remove(parser);
}
所以我希望我的包能够在有或没有该服务实现的情况下进行部署。
然而,这就是 eclipses 给我的东西:
为什么?这根本不是要求!这显然是可选的。
我发现 this ticket 似乎在谈论这个问题,但不清楚为什么它被关闭了。我将此添加到我的 bnd.bnd,如票证中所述:
-resolve.effective: active;skip:="osgi.service"
因为这是一个已经修复的错误,而不是一个有可能答案的问题,所以我将其关闭。
我的 bundle 定义了一个接口,以及一个使用该接口实现调用它们的组件(如果存在的话......)。
一个很好的类比是日志服务;如果存在一个(或多个),则通过消息调用它们。
这是我的 DS 声明:
@Reference(cardinality= ReferenceCardinality.MULTIPLE,
policy = ReferencePolicy.DYNAMIC,
service = ITestResultsParserService.class)
public void bindTestResultsParser(ITestResultsParserService parser) {
testResultsParserServices.add(parser);
}
public void unbindTestResultsParser(ITestResultsParserService parser) {
testResultsParserServices.remove(parser);
}
所以我希望我的包能够在有或没有该服务实现的情况下进行部署。
然而,这就是 eclipses 给我的东西:
为什么?这根本不是要求!这显然是可选的。
我发现 this ticket 似乎在谈论这个问题,但不清楚为什么它被关闭了。我将此添加到我的 bnd.bnd,如票证中所述:
-resolve.effective: active;skip:="osgi.service"
因为这是一个已经修复的错误,而不是一个有可能答案的问题,所以我将其关闭。