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

Java项目连接MySQL数据库遇驱动相关报错,求排查方案

解决java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mydbname错误

问题背景

连接HeidiSQL创建的MySQL数据库时触发上述错误,尝试手动加载org.mariadb.jdbc.Driver时又出现ClassNotFoundException,Gradle依赖中已声明MariaDB驱动,且其他依赖可正常加载。


修正方案

1. 调整JDBC URL协议

MariaDB JDBC驱动优先识别jdbc:mariadb://前缀,原URL使用jdbc:mysql://会导致驱动无法被SPI机制自动检测到。修改URL为:

private static final String URL = "jdbc:mariadb://localhost:3306/mydbname";

2. 移除冗余的Class.forName调用

Java 6及以上版本中,JDBC驱动会通过META-INF/services/java.sql.Driver文件自动注册,无需手动调用Class.forName()。删除相关代码后,连接方法简化为:

public static Connection getConnection() throws SQLException {
    return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}

3. 确保依赖被正确打包(针对Shadow插件)

使用Shadow插件构建时,需执行shadowJar任务生成包含所有依赖的Fat Jar,而非默认的普通Jar。运行程序时使用:

./gradlew shadowJar
java -jar build/libs/[你的项目名称]-all.jar

若在IDE中运行,需同步Gradle依赖,确认IDE的运行类路径包含mariadb-java-client库。


修正后的完整代码

package utilities;

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

public class DBConnectionUtil {
    private static final String URL = "jdbc:mariadb://localhost:3306/mydbname";
    private static final String USERNAME = "myUsername";
    private static final String PASSWORD = "myPassword";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:58:12