4

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

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

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我面临的问题是

'!无法解析捆绑包:[agenda.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)))

] !无法启动捆绑议程.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)
4

3 回答 3

1

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

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

于 2015-05-17T14:25:20.897 回答
1

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

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

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

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

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

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

org.apache.felix.dependencymanager;version='[3,4)',\
org.apache.felix.dependencymanager.shell;version='[3,4)',\
于 2015-05-18T19:19:43.820 回答
0

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

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

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

于 2018-04-25T07:49:47.817 回答