我怎么知道我不应该在 Karaf 功能文件中包含哪些包?

How can I know what bundles I should not include in a Karaf features file?

在 Karaf 功能文件中,如果我包含某些包,那么 Karaf 将停止正常工作。

我怎么知道哪些包不应该包含在功能文件中?例如,如果我在 Windows 上将这些包添加到 Karaf 的功能文件中,Karaf 会不高兴并且表现得很奇怪。我认为是因为 Karaf 已经为这些包提供了 Java 接口。

<bundle>mvn:org.osgi/org.osgi.core/4.3.1</bundle>
<bundle>mvn:org.osgi/org.osgi.compendium/5.0.0</bundle>

是否还有程序化方法可以确定这一点?

是否有我不应包含的捆绑包列表?

我知道 Karaf 使用 pax-logging 而不是那些 slf4j。


更详细地说,我的 SBT 项目为我的包编译了一个依赖包列表,在我从我的代码返回的列表中,我得到了 org.osgi.core 和 org.osgi.compendium。它们是我的主要项目 osgi 包的依赖项。现在,问题是,我怎么知道 Karaf 不希望将此安装为我的功能的一部分?

您不得安装框架以外的其他框架包;) 这是绝对的 NOGO!

因为 Karaf 已经提供了您需要的一切,在这种情况下是框架。 所以甚至不要考虑添加 std。框架包到你的 OSGi 环境,它们已经在那里了。

如果你想拥有某些纲要包。 确保安装实施包,正如您已经指出的那样,pax-logging 包已经提供了 osgi 日志记录纲要服务所需的一切。

Pax-Web 和 OSGi HttpService 包也是如此。 你会发现很多已经 pre-registered OSGi 纲要服务与 Karaf, 如果您需要更多,请安装实现,而不是规范包。

编辑

nop programmatic 或 Karaf 内部方式可以告诉您不包含那些包。这只是众所周知的事情。 实施包总是也会为您带来所需的 osgi 包。