【问题标题】:no osgi ready dependencies没有 osgi 就绪依赖项
【发布时间】:2017-09-12 22:57:27
【问题描述】:

目前我正在使用 osgi 和 karaf。

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

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

  • 我尝试使用包含 jar 的“嵌入依赖”
    与项目的依赖关系......我认为这不是一个解决方案 因为当我尝试嵌入 jar 时,它会要求我包含其他 第一个 jar 依赖的 jar,依此类推..

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

我不确定我是否以错误的方式进行操作,或者问题到底出在哪里。 任何提示如何处理没有 osgi 就绪的依赖项?

【问题讨论】:

    标签: osgi apache-karaf embedded-osgi


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您的回答,但在我完成捆绑包之后,我总是收到 java.lang.NoClassDefFoundError。在此之前,我遇到了许多 class not found 的异常,我通过导出所需的包来解决这个问题。
    猜你喜欢
    • 2019-07-22
    • 2017-01-26
    • 1970-01-01
    • 2013-03-05
    • 2015-10-04
    • 2015-10-05
    • 2014-04-14
    • 2015-10-03
    • 2017-01-12
    相关资源
    最近更新 更多