org.postgres.Driver类异常 - 初学者

时间:2017-08-24 09:07:59

标签: java sql postgresql connection

感谢您的帮助,我在这里是一个完整的菜鸟但是想要学习。 以下代码只是尝试创建与数据库的连接。我收到了这个错误:

java.lang.ClassNotFoundException: org.postgres.Driver
    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 CreateDB.main(CreateDB.java:11)
java.lang.ClassNotFoundException: org.postgres.Driver

在线研究我遇到的解决方案是检查库是否已添加到构建路径。我可以确认我(我认为)。这样做我右键点击了项目 - >属性 - > Java构建路径 - >外部JARS并导航到postgresql - 42.41.4..jar,它位于" ... \ eclipse-workspace \ libraries \" 我可以看到该库是在项目中的引用库下添加的。 不是线索现在我卡住了。任何帮助都是真的很感激。

我在这里学习https://www.tutorialspoint.com/postgresql/postgresql_java.htm

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

public class CreateDB {
    public static void main(String Args[]) {
        Connection c = null;
        try {
            Class.forName("org.postgres.Driver");
            c = DriverManager.getConnection("jdbc.postgresql://localhost:1080/VEM", "postgres", "Diablo12" ); //creates connection with U&P
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getClass().getName() +": " + e.getMessage());
            System.exit(0);
        }
        System.out.println("Database opened successfully");
    }
}

1 个答案:

答案 0 :(得分:1)

正确的驱动程序名称为:org.postgresql.Driver。所以你的代码应该是这样的:

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

public class CreateDB {
    public static void main(String args[]) {
        Connection c = null;
        try {
            Class.forName("org.postgresql.Driver");
            c = DriverManager.getConnection("jdbc.postgresql://localhost:1080/VEM", "postgres", "Diablo12" ); //creates connection with U&P
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getClass().getName() +": " + e.getMessage());
            System.exit(0);
        }
        System.out.println("Database opened successfully");
   }
}

false驱动程序名称会导致java抛出ClassNotFoundException,因为在类路径中找不到具有传递名称的类。 从Java 6开始,不再需要通过Class.forName()加载驱动程序,例如a_horse_with_no_name在他的评论中指出。