Spring Boot项目加载H2数据库驱动失败问题求助
解决Spring Boot 3.0.3加载H2数据库驱动失败问题
针对你遇到的Failed to load driver class org.h2.Driver及后续依赖注入异常,按以下步骤排查:
1. 校验H2依赖版本与Spring Boot 3.x的兼容性
Spring Boot 3.x基于Jakarta EE规范,需搭配H2 2.1.x及以上版本(旧版本H2依赖javax包,与Spring Boot 3.x不兼容)。确保pom.xml中H2依赖版本正确,示例:
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>2.2.224</version> <scope>runtime</scope> </dependency>
注:如果使用Spring Boot父依赖,可省略version,由父依赖管理自动匹配兼容版本。
2. 确认H2依赖的Scope设置
不要将H2依赖的scope设为test,否则应用运行时无法加载驱动类。保持scope为runtime或默认的compile即可。
3. 检查application.properties配置正确性
确保数据库配置无拼写错误,关键配置示例:
# H2数据库配置 spring.datasource.url=jdbc:h2:mem:tennis-db spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password= # 开启H2控制台(可选) spring.h2.console.enabled=true
注意:H2 2.x版本的驱动类仍是
org.h2.Driver,无需修改类名。
4. 清理依赖缓存并重新构建
执行Maven命令清理缓存并重新下载依赖:
mvn clean install -U
若使用Gradle,执行:
gradle clean build --refresh-dependencies
5. 排查IDE类路径问题
- 确认IDE(如IDEA/Eclipse)已正确导入H2依赖,无依赖缺失或排除情况。
- 可通过IDEA的
File → Project Structure → Modules → Dependencies查看H2是否在运行时类路径中。
补充:实体类注解校验(关联依赖注入异常)
确保Player实体类注解配置正确,示例:
import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; @Entity public class Player { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer ranking; // 无参构造、getter/setter方法(Spring Data JPA需要无参构造) public Player() {} // 其他构造方法、getter/setter }
注意:Spring Boot 3.x使用
jakarta.persistence包下的注解,而非旧版的javax.persistence。
内容的提问来源于stack exchange,提问作者TypicalDeveloper1234567
相关产品推荐
相关产品推荐

