我一直在努力遵循“用OSGi构建模块化云应用程序”。在“创建第一个OSGi应用程序”一书的第3章中,作者描述了如何使用bndtools在eclipse中创建一个简单的OSGi应用程序。
下面是我的类和配置的截图。







我面临的问题是
'!无法解决捆绑包:[agaga.service.Simpl-0.0.1bundle agenda.service.simple 9中的未解决约束:无法解决agenda.service.simple 9:缺少需求9.0osgi.wiring.package; ]!未能启动包agenda.service.simple-0.0.1,包agenda.service.simple 9中未解决的异常约束:无法解决agenda.service.simple:缺少需求9.0 osgi.wiring.package;____________________________‘
另外,当我试图在gogo中发出一个命令时,有时也不正确地输入。但是最终,当它完成时,包状态看起来就像
g!lb : CommandNotFoundException:命令未找到:b g!lb gogo: CommandNotFoundException:命令未找到: llb g!g!g!g!g! g! 启动级别1,ID,状态,状态,层,名称 Apache Felix Dependency (4.0.1) 2\x Apache Felix依赖关系管理器Shell (4.0.1) 3区活动区1区Apache Felix Gogo命令(0.14.0) 4区活动区1 Apache Felix Gogo Runtime (0.10.0) 5区活动区1 Apache Felix Gogo Runtime (0.12.1) 6个活动区1区Apache Felix Gogo Shell (0.10.0) 7个活动区区[ 1|osgi.cmpn ] (5.0.0.201305092017) 8\x{e76f}Active\ 1|agenda.api (0.0.0.201505171119) 9\x{e 010}安装了x 1|agenda.service.simple (0.0.1)
发布于 2015-05-17 14:25:20
您的agenda.service.simple包正在寻找一个在3.0.0到4.0.0之间导出org.apache.felix.dm版本的包,但它只找到导出的4.0.1版本。
通常情况下,这将是在针对不同版本的felix进行编译时导致的,而不是针对您正在运行的。
发布于 2015-05-18 19:19:43
通常情况下,这将是在针对不同版本的felix进行编译时导致的,而不是针对您正在运行的。
确实,这很可能是因为Bndtools为构建路径依赖项选择最低版本(在指定版本范围内),而为运行包选择最高版本(在指定版本范围内)。
在您的示例中,没有指定范围,因此版本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)',\发布于 2018-04-25 07:49:47
我也在读上面的书。当我试图运行这个项目时,我也遇到了同样的问题。出现此问题是因为我们手动向项目提供dependency manager .jars,而这又与项目所需的.jar版本相冲突。
我使用在高级模式下完成了一个新的Eclipse设置,并能够获得正在运行的项目。您可以在下面的链接中获得安装详细信息:
eclipse
https://stackoverflow.com/questions/30286459
复制相似问题