error: java.lang.ClassNotFoundException: org.postgresql.Driver

error: java.lang.ClassNotFoundException: org.postgresql.Driver

我只是想在 Debian 10 上从 java (11.0.8) 连接到 postgres (13.0.1) 并得到以下错误:

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

public class cli_test {
    public static void main(String[] args) {
    
        try {
            Connection connection = null;
            Class.forName("org.postgresql.Driver");
            
            connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/myproj", "postgres", "<pwd>");
            
            System.out.println("Connection established successfully");
        } catch (Exception e) {
            System.out.print("error: \n" + e.toString() + "\n" + e.getMessage());
        }
    }
}

我运行这些命令:

CLASSPATH=/usr/lib/jvm/java-11-openjdk-amd64/lib/postgresql-42.2.18.jar
javac -verbose cli_test.java
java cli_test

我已验证 jar 文件存在于该位置并设置为 755 权限。

我收到这个错误:

java.lang.ClassNotFoundException: org.postgresql.Driver

我花了几个小时在网上搜索,发现很多其他人都有这个问题。我发现没有其他解决方案可以修复它。我试图在没有 java ide 的情况下做到这一点,只是一个文本编辑器。

这不是 Java 的问题,但您 bash 的使用方式有误。设置 CLASSPATH=.. 不会使此环境变量在之后的程序调用中对 java 可用。尝试

export CLASSPATH=.:/usr/lib/jvm/java-11-openjdk-amd64/lib/postgresql-42.2.18.jar
javac -verbose cli_test.java
java cli_test

CLASSPATH=.:/usr/lib/jvm/java-11-openjdk-amd64/lib/postgresql-42.2.18.jar java cli_test