为什么 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"

因为这是一个已经修复的错误,而不是一个有可能答案的问题,所以我将其关闭。