【问题标题】:PostgreSQL driver issuePostgreSQL 驱动程序问题
【发布时间】:2019-02-27 10:10:15
【问题描述】:

这个问题已经被问过很多次了,但是我没有找到任何合适的答案。

简而言之:“找不到适合 jdbc:postgresql://localhost:5432/Ecole 的驱动程序”

我的代码:

import java.sql.*;

public class Connect {
    public static void main(String[] args) {
        try {
            Class.forName("org.postgresql.Driver");
            System.out.println("Driver O.K.");

            String url = "jdbc:postgresql://localhost:5432/Ecole";
            String user = "postgres";
            String passwd = "root";

            Connection conn = DriverManager.getConnection(url, user, passwd);
            System.out.println("Connexion effective !");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

堆栈错误:

java.lang.ClassNotFoundException: org.postgresql.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at Connect.main(Connect.java:6)

Process finished with exit code 0

我诊断出问题很可能是因为我的程序在错误的地方寻找驱动程序。 以下是导致我得出这个结论的原因:

在 IntelIJ 上连接成功(在 Datagrip 上也成功)

驱动程序在 IntelIJ 上是最新的(在 Datagrip 上也有效)和驱动程序的类名正确,如我的主要内容中所述

数据库在 pgAdmin 上处于活动状态

Datagrip 运行良好

如上所述,所有这些都让我得出结论,我的程序很可能在错误的地方寻找驱动程序(纠正我我错了)。 所以呢 ?在这种情况下我们应该怎么做?非常感谢您的帮助。

【问题讨论】:

  • 您究竟是如何运行 JVM 的,以及从哪个工具运行的?事实仍然是 JDBC 驱动程序不在类路径上,所以你必须把它放在那里。
  • 如果您得到ClassNotFoundException,则驱动程序不在运行时类路径中。您显示的屏幕截图与此问题完全无关。前两个和最后一个屏幕截图显示了 IntelliJ/Datagrip 中数据库工具的配置,这与运行使用 JDBC 驱动程序的 Java 应用程序无关:您需要将驱动程序显式添加到应用程序依赖项中。另一个只是显示您的数据库已启动并正在运行,这与您的 Java 应用程序在其运行时类路径中没有驱动程序无关。

标签: java postgresql jdbc driver


【解决方案1】:

好的,所以我确实必须将 .jar 文件添加到依赖项中。

这样做:

  1. 在以下链接中下载 postgresql .jar 文件: https://jdbc.postgresql.org/download.html

  2. 把它放在你电脑的某个地方,建议把它放在你的 jre/lib 中,如下所示: C:\Program Files\Java\jdk1.8.0_181\jre\lib

  3. 把它放在你的运行时类路径中,如下所示。 (我花了很长时间才整理出来,所以我一步一步把所有的东西都放好了)。

【讨论】:

  • 您不应将外部库放入您的 JRE 安装中。那是存储东西的错误位置(考虑如果升级 Java 可能会发生什么)。在其他地方创建一个文件夹(例如C:\Development\libs 或任何你喜欢的)。
猜你喜欢
  • 2011-09-01
  • 2016-11-19
  • 2013-10-25
  • 1970-01-01
  • 2018-05-16
  • 2012-04-02
  • 2012-03-10
  • 1970-01-01
  • 2017-09-11
相关资源
最近更新 更多