如何使用Apache Camel将XML payload转换为JSON并解决类路径兼容报错问题
问题原因
这个错误属于Apache Camel与Spring Boot版本不兼容导致的类路径冲突:你当前使用的Camel 2.23.4版本,和项目引入的Spring Boot版本不匹配,才会出现HierarchicalPropertiesEvaluator类的目标方法不存在的报错。
解决方案
1. 统一版本匹配
Camel和Spring Boot有严格的版本对应关系,二选一调整即可:
- 方案一:保持Camel 2.23.4版本不变,将Spring Boot版本降级到2.1.x系列(推荐2.1.18.RELEASE),Maven父依赖配置参考:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.18.RELEASE</version> <relativePath/> </parent>
- 方案二:保持当前Spring Boot版本不变,升级Camel到对应兼容版本:Spring Boot 2.7.x对应Camel 3.18.x版本,Spring Boot 3.x对应Camel 4.x版本,确保所有Camel相关依赖的版本号完全一致。
2. 清理冲突依赖
- 执行
mvn clean install -U强制刷新依赖,也可以手动删除本地maven仓库下的org/apache/camel目录后重新拉取依赖。 - 执行
mvn dependency:tree排查所有Camel相关依赖,若存在不同版本的Camel包间接引入,使用<exclusion>标签排除冲突版本。
额外代码优化提示
你当前路由的逻辑是先把XML转为JSON再做XSD校验,XSD校验仅支持XML格式,会直接校验失败,建议调整逻辑顺序:先完成XSD校验,再执行XML转JSON的操作,参考修改:
from("direct:xmlValidator") // 先执行XML校验 .choice() .when(header("ebmName").isEqualTo("pers.marriage.ebm.marrInfo_1.0")) .to("validator:file:D:/Users/User/Downloads/retail.prod.ebm.subCatgInfo_1.0.xsd") .end() // 校验通过后再转JSON .marshal(xmlJsonFormat) .log("${body}");
内容的提问来源于stack exchange,提问作者Jenny
相关产品推荐
相关产品推荐

