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

PostgreSQL 14通过DriverManager连接失败:找不到合适驱动

问题:DriverManager连接PostgreSQL提示"No suitable driver found"

我正在解决「添加JDBC驱动/找不到合适驱动」问题。PostgreSQL 14.4数据库已安装,SpringBoot服务可正常连接,配置如下:

spring:
  jpa:
    hibernate:
      ddl-auto: create
    database-platform: org.hibernate.dialect.PostgreSQLDialect
    show-sql: true
  datasource:
    url: "jdbc:postgresql://localhost:5432/garage"
    username: garage_owner
    password: XXXX

不过我希望通过DriverManager建立连接(注:我知道DataSource是更优选择,具备连接池等特性,但本次为实验需求)。已下载postgresql-42.4.0 JDBC驱动并添加到项目中,测试代码如下:

public class JdbcMain {         
    final String URL = "jdbc:postgresql://localhost:5432/garage";
    public static void main(String[] args) {
            new JdbcMain().setConnectionByDriverManager();
        }
    public void setConnectionByDriverManager() {
            //https://jdbc.postgresql.org/documentation/head/load.html
            //Class.forName("org.postgresql.Driver");
            try {
                Connection connection = DriverManager.getConnection(URL, "garage_owner", "XXXX");
                System.out.println("Connected!");
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
    }
}

运行后出现错误:

Caused by: java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/garage

已确认PostgreSQL与JDBC版本兼容、URL正确,请问手动配置JDBC时遗漏了什么?


可能的原因及解决方法

  • 强制加载驱动类:
    虽然JDBC 4.0及以上支持自动加载驱动,但独立运行的main方法场景中,自动加载机制可能失效。取消注释代码中的Class.forName("org.postgresql.Driver");语句,强制触发驱动向DriverManager注册。

  • 验证驱动jar在运行时类路径中:
    如果是手动添加jar包:

    • 确保IDE已将该jar标记为项目依赖库(比如IntelliJ中右键jar选择"Add as Library");
    • 手动运行类时,通过java -cp参数把驱动jar纳入类路径,示例:
      java -cp .:postgresql-42.4.0.jar JdbcMain
      

    如果用Maven/Gradle构建,需保证依赖配置正确且scope为compile(避免provided这类限制运行时的范围),Maven依赖示例:

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.4.0</version>
        <scope>compile</scope>
    </dependency>
    
  • 检查类路径隔离问题:
    SpringBoot运行时会通过fat jar打包所有依赖,驱动会被包含在内;但独立运行单个类时,类路径是独立的,需确保驱动jar在当前运行环境的类路径中,而非仅存在于SpringBoot的依赖目录里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:18:21