gpt4 book ai didi

postgresql - PostgreSQL 和 JDBC 的 ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-01 18:11:14 25 4
gpt4 key购买 nike

我在与 Java 和 PostgreSQL 数据库建立连接时遇到一些困难。我已经下载了 JDBC4 Postgresql Driver, Version 9.2-1002驱动程序并正确设置应用程序 ClassPath。我的代码如下

import java.sql.*;

public class JavaPostGreSQLConnectivity
{
public static void main(String[] args)
{
DB db = new DB();
db.dbConnect("jdbc:postgresql://127.0.0.1:5432/TestDB", "postgres","pwd");
}
}

class DB
{
public DB() {}

public void dbConnect(String db_connect_string, String db_userid, String db_password)
{
try
{
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
System.out.println("connected");

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

运行时出现以下错误

enter image description here

是否在提示

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

如果是这样,那么驱动程序名称是什么?不过,我关注了this为了我的学习目的。

但是,如果我这样做

C:\Program Files (x86)\Java\jdk1.7.0\bin>java -cp C:\Users\pos
tgresql-9.2-1002.jdbc4.jar; JavaPostGreSQLConnectivity

connected

它有效。当我已经将驱动程序正确放置在类路径中时,为什么我需要再次显式提及驱动程序?有没有其他方法(我只想将 JAR 文件放在类路径中,程序应该从那里读取)?

提前致谢

最佳答案

驱动程序名称正确。与 official docs 中提到的相同司机的。因此驱动程序不在类路径中。

你说:

I [...] properly set the application ClassPath

另一方面,您只需调用即可启动程序:

java JavaPostGreSQLConnectivity

在这种情况下,类路径上没有 PG 驱动程序。您必须使用类似的内容手动添加它

java -cp postgresql-jdbc4.jar JavaPostGreSQLConnectivity

编辑问题在输入时已更改,因此出现重复。

您仅在 IDE 中添加了该 jar。这有助于 IDE 编译您的代码。如果您使用 IDE 启动程序,那么 IDE 还将为您设置类路径。但如果您不通过 IDE 启动,那么没有人知道正确的类路径,并且必须手动设置。

您的选择是:

  • 始终通过 IDE 启动
  • 制作一些隐藏类路径设置的批处理脚本(常见解决方案)
  • 设置CLASSPATH环境变量(不与其他Java应用程序一起扩展)
  • 创建一个“可执行 Jar”并在其中设置类路径。 (使用该术语搜索本网站)。
  • 将 jar 放入 JVM 自动获取的位置(例如 JRE 的 lib/ext 目录中)。但污染 JRE/JDK 库是最糟糕的选择。

注意:这都是Java基础知识,与PostgreSQL无关。

关于postgresql - PostgreSQL 和 JDBC 的 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60466282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com