【问题标题】:OSGi bundle not started : missing requirement osgi.wiring.package; > &(osgi.wiring.package=org.apache.felix.dm)OSGi 捆绑包未启动:缺少要求 osgi.wiring.package; > &(osgi.wiring.package=org.apache.felix.dm)
【发布时间】:2015-07-28 23:15:49
【问题描述】:

我一直在尝试关注“使用 OSGi 构建模块化云应用程序”。在“创建第一个 OSGi 应用程序”一书的第 3 章中,作者描述了如何使用 bndtools 在 eclipse 中创建一个带有服务的简单 OSGi 应用程序。

下面是我的类和配置的截图。

我面临的问题是

'!无法解析捆绑包: [agenda.service.simple-0.0.1捆绑中未解决的约束 议程.服务.简单 [9]:无法解决 9.0:缺少要求 [9.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(version>=3.0.0)(!(version>=4.0.0)))

] !无法启动捆绑议程.service.simple-0.0.1,异常 捆绑议程.service.simple [9] 中未解决的约束:无法 解决 9.0:缺少要求 [9.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(version>=3.0.0)(!(version>=4.0.0))) ____________________________'

另外,当我尝试在 gogo shell 中发出有时也不能正确输入的命令时。但最终,捆绑状态看起来像

g! lb gogo:CommandNotFoundException:找不到命令:b

g! lb gogo:CommandNotFoundException:找不到命令:llb

g!

g!

g!

g!

g!

g!

lb 起始级别 1 ID|状态|级别|名称

0|Active     |    0|System Bundle (4.0.3)

1|Active     |    1|Apache Felix Dependency Manager (4.0.1)

2|Active     |    1|Apache Felix Dependency Manager Shell (4.0.1)

3|Active     |    1|Apache Felix Gogo Command (0.14.0)

4|Active     |    1|Apache Felix Gogo Runtime (0.10.0)

5|Active     |    1|Apache Felix Gogo Runtime (0.12.1)

6|Active     |    1|Apache Felix Gogo Shell (0.10.0)

7|Active     |    1|osgi.cmpn (5.0.0.201305092017)

8|Active     |    1|agenda.api (0.0.0.201505171119)

9|Installed  |    1|agenda.service.simple (0.0.1)

【问题讨论】:

  • 能否请您告诉您最终为解决错误所做的更改。我遇到了同样的错误。

标签: java eclipse osgi apache-felix bndtools


【解决方案1】:

您的议程服务.simple 包正在寻找一个导出 3.0.0 和 4.0.0 之间的 org.apache.felix.dm 版本的包,但它只找到 Apache Felix 的 4.0.1 版本依赖管理器导出。

这通常是由于编译的 felix 版本与您正在运行的版本不同。

【讨论】:

    【解决方案2】:

    这通常是由于编译的 felix 版本与您正在运行的版本不同。

    确实,这很可能是由于 Bndtools 为 buildpath 依赖项选择最低版本(在指定版本范围内)和为 runbundles 选择最高版本(在指定版本范围内)。

    在您的情况下,没有指定范围,因此版本 org.apache.felix.dependencymanager 3.1.0 版将用于构建路径,4.0.1 版用于运行您的应用程序。

    要使用版本 4 的依赖管理器,您可以将构建路径条目更改为:

    org.apache.felix.dependencymanager;version='[4,5)'
    

    或者要在运行时使用版本 3,您可以将 -runbundles 更改为

    org.apache.felix.dependencymanager;version='[3,4)',\
    org.apache.felix.dependencymanager.shell;version='[3,4)',\
    

    【讨论】:

      【解决方案3】:

      我也在看上面的书。在尝试运行该项目时,我遇到了同样的问题。出现此问题是因为我们手动向项目提供了dependency manager .jars,而这又与项目所需的.jar 版本冲突。

      我使用 Amdatu Blueprint 在高级模式下进行了新的 Eclipse 设置,并且能够获得正在运行的项目。 您可以在下面的链接中获取安装详细信息:

      http://amdatu-repo.s3.amazonaws.com/amdatu-blueprint/r1/docs/index.html#_install_eclipse

      【讨论】:

        猜你喜欢
        • 2019-10-11
        • 2018-05-10
        • 2016-02-18
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2017-09-28
        • 2012-04-16
        相关资源
        最近更新 更多