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 捆绑包)中安装的包未正确安装(状态应为活动未安装)