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

如何让Java识别PostgreSQL JDBC驱动?

问题

尝试编写Java代码连接PostgreSQL数据库,初始测试代码如下:

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

public class Main {
  private static final String url = "jdbc:postgresql://localhost/dvdrental";
  private static final String user = "postgres";
  private static final String password = "...";

  public static void main(String[] args) throws SQLException {
    var conn = DriverManager.getConnection(url, user, password);
    System.out.println("Connected to the PostgreSQL server successfully.");
  }
}

运行时抛出错误:

Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost/dvdrental
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:708)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:230)

已在pom.xml中添加PostgreSQL驱动依赖:

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>42.6.0</version>
</dependency>

执行mvn package后运行程序,仍出现相同错误,请问还需进行哪些操作才能让Java正确使用该驱动?

解决方案
  • 显式加载驱动类:
    JDBC 4.0+虽支持自动加载驱动,但部分环境下仍需手动触发。在调用DriverManager.getConnection()前添加以下代码:

    Class.forName("org.postgresql.Driver");
    

    这会强制JVM加载PostgreSQL驱动类,确保DriverManager能识别对应的JDBC URL。

  • 确保运行时类路径包含驱动:
    默认mvn package生成的jar包不包含依赖,导致运行时找不到驱动。可通过以下两种方式解决:

    1. 使用maven-shade-plugin打包可执行jar:
      在pom.xml的<build><plugins>中添加插件配置:
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.4.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>Main</mainClass> <!-- 替换为你的主类全限定类名 -->
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
      
      执行mvn clean package后,target目录下会生成包含所有依赖的可执行jar,用java -jar your-jar-name.jar运行即可。
    2. IDE中运行时刷新依赖:
      如果是在IDE(如IntelliJ、Eclipse)中运行,尝试刷新Maven依赖(IntelliJ可点击Reload All Maven Projects),确保驱动jar已被正确添加到项目类路径。
  • 验证JDBC URL的正确性:
    确认URL格式无误,若PostgreSQL端口不是默认的5432,需显式指定端口:

    private static final String url = "jdbc:postgresql://localhost:5432/dvdrental";
    
  • 检查驱动与JDK版本兼容性:
    PostgreSQL驱动42.6.0要求JDK 8及以上版本,确认你的项目使用的JDK版本符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:00:01