Java Class.forName(“org.postgresql.Driver”错误

Java Class.forName(“org.postgresql.Driver”错误,java,jdbc,Java,Jdbc,我有简单的课程。然后我尝试编译并运行它,我看到ClassNotFoundException import java.sql.*; public class DBProcessor{ private static String serverAdres = "127.0.0.1:5432"; private static String DBname = "dota"; private static String clientName = "postgres"; private static S

我有简单的课程。然后我尝试编译并运行它,我看到ClassNotFoundException

import java.sql.*;

public class DBProcessor{

private static String serverAdres = "127.0.0.1:5432";

private static String DBname = "dota";
private static String clientName = "postgres";
private static String password = "master";
private static Connection connection;

public static void connect() {
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        System.err.println("Where is your PostgreSQL JDBC Driver? "
                + "Include in your library path!");
        e.printStackTrace();
    }

    try {
        connection = DriverManager.getConnection("jdbc:postgresql://" + serverAdres + "/" + DBname, clientName, password);

    } catch (SQLException e) {
        System.err.println("Connection Failed! Check output console");
        e.printStackTrace();
    }

    if (connection == null) {
        System.err.println("Failed to make connection!");
    }
}

public static void main(String[] args){
    DBProcessor db = new DBProcessor();
    db.connect();
}
}
我正在使用Windows cmd:

C:\rmi2>javac -classpath postgresql.jar DBProcessor.java
C:\rmi2>java DBProcessor
Where is your PostgreSQL JDBC Driver? Include in your library path!
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at DBProcessor.connect(DBProcessor.java:12)
at DBProcessor.main(DBProcessor.java:34)
Connection Failed! Check output console
java.sql.SQLException: No suitable driver found for jdbc:postgresql://127.0.0.1:
5432/dota
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DBProcessor.connect(DBProcessor.java:20)
at DBProcessor.main(DBProcessor.java:34)
Failed to make connection!
我做错了什么?
这是命令行上的postgrsql库

java DBProcessor
应该是

java -cp .;postgresql.jar DBProcessor
而且,因为它包含
java.sql.Driver
,所以当它工作时,您可以删除它

// try {
//    Class.forName("org.postgresql.Driver");
// } catch (ClassNotFoundException e) {
//    System.err.println("Where is your PostgreSQL JDBC Driver? "
//            + "Include in your library path!");
//    e.printStackTrace();
// }
根据Javadoc

DriverManager
方法
getConnection
getDrivers
已得到增强,以支持Java标准版服务提供程序机制。JDBC4.0驱动程序必须包含文件
META-INF/services/java.sql.Driver
。此文件包含
java.sql.Driver
的JDBC驱动程序实现的名称。例如,要加载
my.sql.Driver
类,META-INF/services/java.sql.Driver文件将包含以下条目:

 my.sql.Driver
应用程序不再需要使用
Class.forName()
明确加载JDBC驱动程序。当前使用
Class.forName()
加载JDBC驱动程序的现有程序将继续工作,无需修改


您需要将驱动程序链接到IDE。
如果您使用的是Netbeans,右键单击库,添加jar/文件夹,然后浏览到驱动程序。

如果您使用的Java运行时环境无法访问postgresql.jar文件 将获得“java.lang.ClassNotFoundException:org.postgresql.Driver”异常

让用户可以访问postgresql jdbc驱动程序的最简单方法 应用程序将其作为Java扩展安装。你唯一需要做的事 是cp、mv或ln,将postgresql.jar文件放入Java扩展目录。那里 如果这样做,则不需要设置类路径。 Java扩展目录是$Java\u HOME/jre/lib/ext($Java\u HOME) is/usr/java/jdk1.3)或适用于Windows C:\Program Files\java\jdk1.8.0\U 25\jre\lib\ext


这让生活真的很轻松;我再也不用在我的环境中设置类路径了

解释一下:您的PostgreSQL JDBC驱动程序在哪里?你的库路径中包括了吗?-classpath postgresql.jar它是库路径吗?@otopba不知道。
jar-tvvf-postgresql.jar
的结果是什么?
-classpath
指令只会帮助您的代码编译,而不会帮助它run@ElliottFrisch这是官方网站上的图书馆。