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

JavaFX(Maven)项目连接H2嵌入式数据库时提示‘找不到合适驱动’

问题描述

开发JavaFX简易CRUD应用时,使用Maven搭配H2数据库遇到连接异常:已在用户目录创建data.mv.db数据库文件,确认JDBC URL正确,但DBConnection类无法识别该文件,运行时抛出如下异常:

java.sql.SQLException: No suitable driver found for jdbc:h2:~/data

DBConnection类代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
    public static void main(String[] args) {
        String jdbcURL = "jdbc:h2:~/data";
        String username = "sa";
        String password = "123";

        try {
            Connection connection = DriverManager.getConnection(jdbcURL, username, password);
            System.out.println("Connected to H2 embedded database.");

            connection.close();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Maven的pom.xml中H2依赖配置:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.2.220</version>
    <scope>test</scope>
</dependency>
解决方法

核心原因

H2依赖的scope被设置为test,该作用域仅允许测试代码编译、运行时访问依赖,主程序代码(非测试类)无法加载到H2的JDBC驱动,导致DriverManager找不到适配的驱动类。

修复步骤

  1. 修改pom.xml中的H2依赖配置,移除scope标签(默认作用域为compile,主程序可正常访问):
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.2.220</version>
</dependency>
  1. 可选优化:在获取数据库连接前显式加载H2驱动(JDBC 4.0+支持自动加载,但显式加载可规避部分类加载器兼容问题),在try代码块开头添加:
Class.forName("org.h2.Driver");

验证

修改完成后重新运行DBConnection类,若控制台输出Connected to H2 embedded database.,则说明数据库连接成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:26:37