
本文详解 Spring Boot 2.7.x 项目因使用已弃用的 mysql:mysql-connector-java 坐标导致 Failed to load driver class com.mysql.cj.jdbc.Driver 错误的根本原因,并提供兼容 Java 8 + MySQL 8+ 的标准修复方案。
本文详解 spring boot 2.7.x 项目因使用已弃用的 `mysql:mysql-connector-java` 坐标导致 `failed to load driver class com.mysql.cj.jdbc.driver` 错误的根本原因,并提供兼容 java 8 + mysql 8+ 的标准修复方案。
在 Spring Boot 2.7.x(尤其是基于 Jakarta EE 9+ 和较新 MySQL Server 8.0+ 的环境)中,原 Maven 坐标 mysql:mysql-connector-java 已被官方正式弃用并重命名。自 MySQL Connector/J 8.0.31 起,MySQL 官方将 JDBC 驱动的 groupId 从 mysql 更改为 com.mysql,artifactId 也由 mysql-connector-java 更新为 mysql-connector-j —— 这一变更不仅是命名调整,更标志着对 Jakarta EE 命名空间(如 jakarta.sql.*)的全面适配,与 Spring Boot 2.7+ 的底层依赖体系严格对齐。
若继续使用旧坐标(如 <groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>),Maven 可能拉取到不兼容的旧版 JAR(例如 5.1.x 或未适配 Jakarta EE 的 8.0.30-),导致运行时无法加载 com.mysql.cj.jdbc.Driver 类,最终抛出 RuntimeException: Failed to load driver class 异常——这正是你控制台日志的核心报错来源。
✅ 正确做法:统一使用最新稳定版 com.mysql:mysql-connector-j
请将 pom.xml 中原 MySQL 依赖:
<!-- ❌ 已弃用,会导致驱动类加载失败 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>替换为(推荐显式指定版本以确保可重现性):
<!-- ✅ 官方推荐:兼容 Spring Boot 2.7.10 + MySQL 8.0+ -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
<scope>runtime</scope>
</dependency>? 提示:8.0.33 是截至 2024 年广泛验证稳定的版本(支持 TLS 1.3、IPv6、caching_sha2_password 认证等),优于问题中建议的 8.0.32;若使用 Spring Boot 3.x,则需升级至 8.2.x 或 8.3.x 系列。
同时,请确认 application.properties 中的驱动类配置正确(Spring Boot 2.7+ 默认自动推断,无需手动配置,但建议保持一致):
# 可选:显式声明(非必需,但增强可读性) spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 数据源连接信息(确保 MySQL 服务已启动且权限正确) spring.datasource.url=jdbc:mysql://localhost:3306/restapi?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=my_password # JPA/Hibernate 配置(避免建表失败) spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true
⚠️ 注意事项:
- 删除重复依赖:检查你的 pom.xml,当前存在两处 spring-boot-starter-data-jpa(一处带注释,一处未注释),务必只保留一个,避免潜在冲突;
- HSQLDB 冲突风险:你同时引入了 <artifactId>hsqldb</artifactId>(HSQL)和 MySQL 驱动,Spring Boot 会按 classpath 顺序尝试初始化数据源。若 HSQL 在 MySQL 之前加载,可能导致 DataSource 初始化异常。建议移除 HSQLDB 依赖(除非明确需要嵌入式测试数据库);
- 验证 MySQL 服务状态:确保本地 MySQL 服务正在运行(sudo systemctl status mysql 或 brew services list | grep mysql),且 restapi 数据库已创建、用户 root 拥有对应权限;
- IDE 缓存清理:修改 pom.xml 后,在 IntelliJ IDEA 中点击 Maven → Reload project;或执行 mvn clean compile 清理本地构建缓存。
完成上述修改后重启应用,DataSource 将成功加载 com.mysql.cj.jdbc.Driver,UnsatisfiedDependencyException 将彻底消失。该方案不仅解决当前报错,更符合 Spring Boot 官方最佳实践与 MySQL 官方维护规范,保障项目长期可维护性。



















