OSGi 捆绑包未启动:缺少要求 osgi.wiring.package; > &(osgi.wiring.package=org.apache.felix.dm)

Posted

技术标签:

【中文标题】OSGi 捆绑包未启动:缺少要求 osgi.wiring.package; > &(osgi.wiring.package=org.apache.felix.dm)【英文标题】:OSGi bundle not started : missing requirement 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)

【问题讨论】:

能否请您告诉您最终为解决错误所做的更改。我遇到了同样的错误。 【参考方案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

【讨论】:

以上是关于OSGi 捆绑包未启动:缺少要求 osgi.wiring.package; > &(osgi.wiring.package=org.apache.felix.dm)的主要内容,如果未能解决你的问题,请参考以下文章

AEM 6.0 Web 控制台捆绑包(OSGi 捆绑包)中安装的包未正确安装(状态应为活动未安装)

无法启动 OSGi 包,缺少 com.ibm.uvm.tools

OSGi:以编程方式决定是不是可以启动捆绑包

OSGI 缺少需求错误

Google Play:捆绑包未签名

OSGi 捆绑为插件架构中的 SOAP Web 服务