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找不到适配的驱动类。
修复步骤
- 修改pom.xml中的H2依赖配置,移除
scope标签(默认作用域为compile,主程序可正常访问):
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>2.2.220</version> </dependency>
- 可选优化:在获取数据库连接前显式加载H2驱动(JDBC 4.0+支持自动加载,但显式加载可规避部分类加载器兼容问题),在
try代码块开头添加:
Class.forName("org.h2.Driver");
验证
修改完成后重新运行DBConnection类,若控制台输出Connected to H2 embedded database.,则说明数据库连接成功。
内容的提问来源于stack exchange,提问作者Damian
相关产品推荐
相关产品推荐

