我正在创建一个将在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获取属性修改更新的正确方法是正确的吗?
谢谢!
答案 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