Spring Boot 3.0.0升级到3.3.0时JdbcClient类找不到报错求助
核心问题:依赖版本冲突
你的pom.xml里dependencyManagement块仍在导入Spring Boot 3.0.0的依赖约束,这会强制大部分Spring相关依赖停留在3.0.0对应的版本(Spring Framework 6.0.x),而JdbcClient是Spring Framework 6.1才新增的类,Spring Boot 3.3.0依赖的是Spring Framework 6.1,版本冲突导致找不到该类。
具体修复步骤
1. 删除旧的dependencyManagement配置
直接移除pom中这段配置:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>3.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Spring Boot的parent已经统一管理所有依赖版本,无需手动导入该约束。
2. 移除spring-boot-starter-data-jpa的手动版本
spring-boot-starter-data-jpa的版本由parent统一管控,手动指定版本多余且可能引发冲突,删除version标签:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <!-- 删除此行 --> <!-- <version>3.3.0</version> --> </dependency>
3. 替换不兼容的Springfox依赖
Springfox 2.8.0完全不兼容Spring Boot 3.x(Spring Boot 3基于Jakarta EE,而旧版Springfox仅支持Java EE),建议替换为Spring官方维护的SpringDoc:
<!-- 移除所有springfox依赖 --> <!-- <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-bean-validators</artifactId> <version>2.8.0</version> </dependency> --> <!-- 添加适配Spring Boot 3.x的SpringDoc依赖 --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.5.0</version> </dependency>
替换后访问http://localhost:8080/swagger-ui.html即可查看接口文档,使用逻辑与Springfox基本一致。
4. 移除手动指定的hibernate-validator版本
Spring Boot 3.3.0已内置兼容的hibernate-validator版本(8.x,适配Jakarta Validation 3.0),手动指定的7.0.5版本针对Java EE,会引发冲突,直接删除该依赖:
<!-- 删除此行 --> <!-- <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>7.0.5.Final</version> </dependency> -->
5. 清理并重新构建
执行以下命令清理本地依赖缓存并重新构建项目:
mvn clean install
之后再运行mvn spring-boot:run即可正常启动。
额外注意点
spring-boot-maven-plugin配置的mainClass为com.example.hero.ExampleSuperHeroesApplication,但properties中的start-class是com.example.hero.SuperHeroesApplication,需确保两者一致,否则可能导致启动失败。- Spring Boot 3.x要求Java版本至少为17,你的配置中已指定
java.version=17,符合要求。
内容的提问来源于stack exchange,提问作者Frederic

