Karaf OSGi配置抛出ResolutionException:无法解析root:缺少要求[root] osgi.identity;

时间:2019-05-19 22:23:19

标签: java osgi apache-karaf osgi-bundle karaf-maven-plugin

我正在创建一个将在Karaf上运行的Spring Boot应用程序。我试图在Karaf中公开项目配置属性,以便能够使用config:property-set更改属性,而无需重新部署应用程序。

因此,我设法配置了karaf功能,以将属性公开给Karaf,但是我试图创建一个OSGi组件,以便在config:property-set更改属性时能够获取更新。

尝试安装.kar文件时遇到的错误如下:

cron

这是我的github repo。我正在将Java 8与Maven 3.6,org.osgi.core 5.0.0,Karaf 4.1.3一起使用

任何想法如何解决该问题?通过使用@Component和@Modified从Karaf获取属性修改更新的正确方法是正确的吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

该错误消息表示您缺少提供捆绑软件要求之一的捆绑软件。

您会在此长错误消息的末尾找到缺少的要求:

(&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0)))

这意味着您缺少osgi.component模型的扩展程序。

那到底是怎么回事?您可以在类中使用声明式服务注释。 Maven包插件读取它们并为声明性服务以及上述扩展程序的要求创建xml。

因此,此要求可帮助您在安装捆绑软件时不要错过声明式服务运行时。

对于karaf,解决方案是安装提供运行时的功能:

feature:install scr

答案 1 :(得分:1)

由于未安装从属捆绑包或已安装捆绑包的版本不在此范围内,因此出现了上述错误,

您可以在karaf终端中通过以下命令检查捆绑软件是否已安装以及安装的版本:

  la -l|grep "#bundle name"

其中包名称是您要为其获取错误的包,

有时可能仅缺少一个捆绑软件,但有可能未安装该功能,该功能仅是一组捆绑软件,

要检查功能是否已安装,请使用以下命令:

feature:list|grep "#feature name" 

在这里,您可以安装该功能,它应该可以解决问题

feature:install scr