You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用spring 5.3.7启动报错java.lang.NoSuchFieldError: USE_DEFAULTS如何解决

问题根因

该错误属于Jackson多版本冲突导致的类加载异常。Spring 5.3.7默认适配的Jackson版本为2.12.x系列,你虽然单独引入了2.10.3版本的jackson-annotations,但大概率存在其他Jackson核心模块(jackson-core、jackson-databind)版本不一致,或是更低版本的Jackson包被第三方依赖传递引入,类加载器优先加载了不含USE_DEFAULTS枚举的低版本JsonInclude$Include类。

解决步骤
  • 第一步:排查全量Jackson依赖版本
    执行对应构建工具的依赖树命令,检查所有com.fasterxml.jackson.core组下的依赖版本是否统一,是否存在多版本共存:
    • Maven项目执行:mvn dependency:tree | grep jackson
    • Gradle项目执行:gradle dependencies | grep jackson
  • 第二步:全局锁定Jackson版本
    推荐优先使用Spring 5.3.7适配的2.12.x版本Jackson,通过依赖管理全局锁定所有Jackson模块版本,避免单模块单独引入导致的不一致:
    Maven配置示例:
    <dependencyManagement>
      <dependencies>
          <!-- 统一管理所有Jackson依赖版本 -->
          <dependency>
              <groupId>com.fasterxml.jackson</groupId>
              <artifactId>jackson-bom</artifactId>
              <version>2.12.3</version>
              <type>pom</type>
              <scope>import</scope>
          </dependency>
      </dependencies>
    </dependencyManagement>
    
    Gradle配置示例:
    configurations.all {
        resolutionStrategy {
            // 强制统一Jackson核心包版本
            force 'com.fasterxml.jackson.core:jackson-core:2.12.3'
            force 'com.fasterxml.jackson.core:jackson-annotations:2.12.3'
            force 'com.fasterxml.jackson.core:jackson-databind:2.12.3'
        }
    }
    
    如果你必须使用2.10.3版本Jackson,将上述配置中的版本号替换为2.10.3即可,需保证所有Jackson模块版本完全一致。
  • 第三步:清理缓存重新构建
    执行构建清理命令排除旧包缓存干扰:
    • Maven执行:mvn clean install
    • Gradle执行:gradle clean build
常见冲突场景排查

如果调整依赖后问题仍然存在,优先排查项目中引入的第三方框架(如RPC框架、ORM框架、云服务SDK等)的传递依赖,这类组件通常会自带低版本Jackson,需手动排除其传递引入的Jackson相关包。


内容的提问来源于stack exchange,提问作者eleazar salas cravioto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:54:05