【发布时间】:2016-01-15 20:27:45
【问题描述】:
我正在尝试使用 Felix 依赖包在 Apache Felix 上运行应用程序。出于某种原因,该容器没有加载我的包。
我正在使用 Eclipse 中的 Bndtools 进行开发。我正在使用 Amdatu 捆绑包。
我关心的包是我的“运行要求”中的包:
org.apache.felix.dependencymanager
org.apache.felix.dependencymanager.shell
org.apache.felix.dependencymanager.runtime
osgi.core
osgi.cmpn
以上所有软件包均取自 Amdatu 存储库。
我创建了两个捆绑包:
com.test.demo.reader
com.test.demo.listener
这些包是使用 org.apache.felix.dependencymanager 和 osgi.core 构建的。
当我尝试运行 OSGi 时,出现以下故障:
! could not resolve the bundles: [com.test.demo.reader-1.0.0 Unresolved constraint in bundle
com.test.demo.reader [8]: Unable to resolve 8.0: missing requirement
[8.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(version>=3.0.0)(!(version>=4.0.0))),
com.test.demo.listener-1.0.0 Unresolved constraint in bundle com.test.demo.listener [9]:
Unable to resolve 9.0: missing requirement [9.0] osgi.wiring.package;
(&(osgi.wiring.package=com.test.demo.reader)(version>=1.0.0)(!(version>=2.0.0)))
[caused by: Unable to resolve 8.0: missing requirement [8.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.felix.dm)(version>=3.0.0)(!(version>=4.0.0)))]]
和
! Failed to start bundle com.test.demo.reader-1.0.0, exception Unresolved constraint in
bundle com.test.demo.reader [8]: Unable to resolve 8.0: missing requirement [8.0]
osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(version>=3.0.0)
(!(version>=4.0.0)))
还有更多
! Failed to start bundle com.test.demo.listener-1.0.0, exception Unresolved constraint in
bundle com.test.demo.listener [9]: Unable to resolve 9.0:
missing requirement [9.0] osgi.wiring.package; (&(osgi.wiring.package=com.test.demo.reader)
(version>=1.0.0)(!(version>=2.0.0))) [caused by: Unable to resolve 8.0: missing requirement
[8.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(version>=3.0.0)
(!(version>=4.0.0)))]
我想我明白发生了什么:显然正在使用的 org.apache.dm 包是一个与我的包不兼容的版本。但这没有任何意义,因为根据 Felix 文档,org.apache.dm 包位于 org.apache.felix.dependencymanager 包中。该捆绑包来自 Amdatu 存储库,它是我与我的应用程序一起使用的捆绑包的唯一版本!当他们的版本是我的捆绑包知道的唯一版本时,该版本与我的捆绑包怎么不兼容???
有人请指教。是什么导致了此故障,我该如何解决?
【问题讨论】:
-
3 个 Felix DM 捆绑包是否处于活动/已解决状态?它们是什么版本,3.0.0、3.1.0 还是 3.2.0?
-
这 3 个捆绑包显然无法解析(基于失败消息)。我错误地认为它在运行时包中,但它实际上在 org.apache.felix.dependencymanager 包中(我将在我的原始帖子中更正这一点)。 Amdatu 捆绑包附带的软件包版本是 4.0.2(我认为)。我怀疑我可能需要找到一个较早的版本。我会看看能不能找到一个并更新发生的情况......
标签: osgi apache-felix osgi-bundle