Spring Boot集成HAPI FHIR Client遇Jackson NoSuchFieldError异常
异常原因分析:java.lang.NoSuchFieldError: ALLOW_LEADING_PLUS_SIGN_FOR_NUMBERS
核心原因
ALLOW_LEADING_PLUS_SIGN_FOR_NUMBERS是Jackson库中com.fasterxml.jackson.core.JsonParser.Feature枚举类的特性字段,该字段仅在Jackson 2.14.0及以上版本中存在。- 你当前使用的Jackson版本为2.13.1,不包含该字段,但HAPI FHIR Client 7.4.0的代码(具体在
JacksonStructure.createObjectMapper方法中)尝试访问这个高版本Jackson才有的字段,直接触发NoSuchFieldError。
版本依赖冲突背景
- Spring Boot 2.6.2默认绑定Jackson 2.13.x系列版本,而HAPI FHIR 7.x(含7.4.0)对Jackson的最低要求是2.14.0。
- 项目依赖未做版本对齐,导致低版本Jackson被优先加载,与HAPI FHIR的依赖需求产生兼容性冲突。
验证方法
通过构建工具查看依赖树,确认Jackson核心包的实际生效版本:
- Maven:执行
mvn dependency:tree | grep jackson-core - Gradle:执行
gradle dependencies | grep jackson-core
解决方向
- 升级Spring Boot版本:将Spring Boot升级至2.7.x及以上(2.7.x默认依赖Jackson 2.14.x),自动完成版本对齐。
- 手动指定Jackson版本:在项目构建配置中强制设置Jackson版本为2.14.0+,例如Maven的
pom.xml中添加:
<properties> <jackson.version>2.14.2</jackson.version> </properties>
内容的提问来源于stack exchange,提问作者christophe spielmann
相关产品推荐
相关产品推荐

