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

Spring Boot集成Apache Derby报错:无法加载EmbeddedDriver驱动类

解决Spring Boot 3.x中Apache Derby嵌入式驱动加载失败问题

核心问题分析

你遇到的Cannot load driver class: org.apache.derby.jdbc.EmbeddedDriver错误,主要和依赖范围、模块化兼容性、冗余配置相关,结合Spring Boot 3.4.2 + Java 23的环境,具体修复方案如下:

1. 调整依赖范围与引入方式

将derby和derbytools设为runtime依赖,在Java 23的模块化环境下可能无法被Spring Boot类加载器正确扫描。推荐直接使用Spring Boot的starter依赖自动管理版本与依赖关系,确保驱动类能被正常加载:

修正后的pom.xml配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbytools</artifactId>
    <scope>runtime</scope>
</dependency>

2. 移除冗余的驱动类配置

Spring Boot 3.x会根据JDBC URL自动推断对应驱动类,手动指定org.apache.derby.jdbc.EmbeddedDriver反而可能触发模块化类加载问题。删除spring.datasource.driver-class-name配置项即可:

修正后的application.yaml配置:

spring:
  datasource:
    url: jdbc:derby:myDerbyDB;create=true
  jpa:
    hibernate:
      ddl-auto: update # 根据业务需求调整
    show-sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.DerbyDialect

3. 适配Java 23模块化规则

Java 23启用了严格的模块化校验,若你的项目是模块化结构,需要在module-info.java中声明Derby模块依赖:

requires org.apache.derby.commons;
requires org.apache.derby.jdbc;

若为非模块化项目(多数Spring Boot项目默认),可在启动参数中添加--add-modules org.apache.derby.jdbc,强制将Derby模块纳入类路径。

4. 排查依赖冲突

执行mvn dependency:tree命令,检查derby和derbytools的版本是否与Spring Boot自动管理的版本(10.16.1.1)一致,若存在版本冲突,手动排除冲突依赖即可。

验证步骤

完成调整后重启应用:

  • 查看控制台是否出现Derby初始化日志(如Created database 'myDerbyDB')
  • 验证JPA实体是否能正常映射至Derby数据库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:39:57