Opendaylight Karaf安装boot特征报错org.apache.felix.cm.json缺失如何解决
Karaf启动org.apache.felix.cm.json缺失报错修复方案
你定位的根因正确,该报错是Karaf 4.3.2版本依赖的org.apache.felix.cm.json包未被正确纳入OSGi运行时解析范围导致,手动添加jar不生效是因为未满足OSGi的bundle注册规则,也没有对齐整个Karaf feature的依赖链,可按以下步骤修复:
- 第一步:在项目的dependencyManagement节点中引入匹配版本的依赖,严格使用1.0.x版本(报错明确要求版本范围为
>=1.0.0且<2.0.0):
<dependency> <groupId>org.apache.felix</groupId> <artifactId>org.apache.felix.cm.json</artifactId> <version>1.0.6</version> </dependency>
- 第二步:修改项目中自定义Karaf feature的xml配置文件,将
org.apache.felix.cm.json明确加入自定义feature的依赖列表,同时校验standard feature的版本和项目引入的Karaf核心版本完全一致,避免版本不匹配。 - 第三步:清理之前手动放入Karaf deploy目录的jar包,执行
mvn clean install重新构建全量项目,启动Karaf前清空其data目录,消除旧缓存对依赖解析的影响。 - 第四步:如上述步骤未解决问题,可临时修改Karaf的
etc/org.apache.karaf.features.cfg配置文件,在featuresRepositories配置项中补充Felix官方仓库,同时在featuresBoot配置项中添加org.apache.felix.cm.json/1.0.6,确保该bundle在standard feature之前加载。
注意:OpenDaylight Nemo仓库已停止维护多年,原生适配的Karaf版本远低于4.3.2,你修改代码时很可能引入了过高版本的Karaf核心依赖才触发该兼容问题。如果上述修复无效,建议将Karaf版本降级到4.2.x系列,对应版本的pax-url-wrap会自动匹配符合要求的felix cm.json包。
内容的提问来源于stack exchange,提问作者Pierangelo Martellone
相关产品推荐
相关产品推荐

