0

目前我正在使用 osgi 和 karaf。

我的问题是没有“osgi ready”依赖项,这意味着一个 jar 还没有准备好作为捆绑部署到 karaf 中。

为了解决此类问题,我尝试了两种解决方案:

  • 我尝试使用“Embed-Dependency”,它将
    在项目中包含 jar 依赖项......我认为这不是一个解决方案,因为当我尝试嵌入 jar 时,它会要求我包含其他 jar第一个 jar 依赖于,依此类推..

  • 我尝试使用 bnd 工具或来自 eclipse 项目的“来自现有 JAR 存档的插件”将没有“osgi 就绪”的 jar 转换为包。这导致了相同的结果,每个 jar 都会调用它所依赖的另一个 jar..

我不确定我是否以错误的方式做这件事或究竟是什么问题。任何提示如何处理没有 osgi 就绪依赖项?

4

1 回答 1

3

最简单的开始方法是使用 wrap: 协议自动创建一个 jar。在幕后,它使用 bnd 动态创建一个包。只需将 wrap: 添加到 jar 的 mvn url。

当您尝试使用 bundle:install -s wrap:mvn:... 安装 jar 时,karaf 会告诉您缺少哪些导入的包。以相同的方式安装提供这些包的 jar。罐子的 pom 可以给你一个提示,缺少什么。

如果您的初始 jar 有很多依赖项,这可能意味着安装大量 jar。

一旦你有一个可安装在一起的 jar 列表,你可以使用 wrap 协议创建一个功能,或者你可以在构建时从个人制作捆绑包。

无论如何,您应该看看servicemix bundles。它为许多库提供了 OSGi 就绪包。

于 2017-04-18T06:24:26.193 回答