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

Spring Boot 2.7引入spring-boot-starter-data-mongodb报版本不兼容错误

问题成因

该错误本质是依赖版本与运行环境不匹配导致的:

  • 报错中提到的org/bson/codecs/record/RecordCodecProvider属于MongoDB Java驱动的核心依赖bson包,新增spring-boot-starter-data-mongodb后传递拉取了过高版本的bson包,该版本的类由Java 17编译生成,对应class文件版本61.0。
  • 你的运行时环境仅能识别最高59.0版本的class文件,对应JDK版本为Java 15,和pom中配置的Java 1.8存在偏差,但即便将运行环境切换为配置的Java 8(仅支持最高52.0版本class文件),依然无法运行该高版本bson包。
  • Spring Boot 2.7.0官方默认管理的MongoDB驱动版本为4.4.x,本身原生兼容Java 8,出现该问题是Maven依赖调解时拉取了超出兼容范围的高版本MongoDB驱动(通常是其他第三方依赖传递引入了高版本bson,或Maven依赖拉取策略导致版本自动升级)。
可行修复方案

按改造成本从低到高排序:

  • 方案1:显式锁定兼容版本(推荐,无需调整现有JDK和Spring Boot版本)
    在pom.xml的<properties>节点中添加配置,强制锁定MongoDB驱动版本为Spring Boot 2.7.x兼容的4.4.x版本:
<properties>
    <java.version>1.8</java.version>
    <!-- 锁定MongoDB驱动版本,兼容Java 8运行环境 -->
    <mongodb.version>4.4.2</mongodb.version>
</properties>

配置完成后执行mvn clean install -U强制更新本地依赖,再启动应用即可。

  • 方案2:排查排除冲突依赖
    执行命令mvn dependency:tree输出全量依赖树,搜索定位到引入高版本org.mongodb:bson的依赖项,在对应依赖配置中添加排除规则,让Maven使用Spring Boot官方管理的兼容版本:
<dependency>
    <groupId>对应引入高版本bson的依赖groupId</groupId>
    <artifactId>对应引入高版本bson的依赖artifactId</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.mongodb</groupId>
            <artifactId>bson</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 方案3:升级运行环境到Java 17
    如果项目允许升级JDK版本,可将运行时JDK切换为Java 17,同时将pom中<java.version>配置修改为17,即可直接兼容高版本MongoDB驱动。注意Spring Boot 2.7.x本身支持Java 17,升级前需确认项目中其他第三方依赖都兼容Java 17。

额外说明:当前报错显示你的实际运行JDK版本为Java 15,和pom中配置的Java 1.8不一致,修复依赖问题后建议同步检查IDE启动配置、服务部署脚本中的JDK版本,和项目配置保持一致,避免后续出现其他版本兼容问题。

内容的提问来源于stack exchange,提问作者Surapaneni Harsha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:24:15