JDBC Postgresql 仅在 Main 类中工作



我正在做一个程序,我需要操作PostgreSQL数据库。我下载了 jdbc 驱动程序.jar并将其放在 lib 文件夹中并配置了 Intellij。

当我从 Main.java 使用 Postgres JDBC 驱动程序时,一切正常。下面是一个打印示例表中所有内容的示例:

public class Main {
public static void main(String[] args) throws java.io.IOException {
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Benerator","postgres","newPassword");
PreparedStatement stmt = con.prepareStatement("select * from public.example");
ResultSet res = stmt.executeQuery();
while(res.next()){
System.out.println(res.getString(1)+ " " + res.getString(2));}
}
}

但是,当我编写一个在 Main 以外的另一个类中执行完全相同操作的函数时,我在Class.forName行上收到一个 java.lang.ClassNotFoundException。当然,接下来的每一行都有例外。

这是DBManager.java类:

public class DBManager {
public DBManager(){
}
public void printExample(){
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Benerator","postgres","newPassword");
PreparedStatement stmt = con.prepareStatement("select * from public.example");
ResultSet res = stmt.executeQuery();
while(res.next()){
System.out.println(res.getString(1)+ " " + res.getString(2));}
}
}

我认为这是一个新手问题,但我很难找到原因,有什么线索吗?

编辑:当我用 Try/Catch 包围我的代码时,一切正常

  1. 在 Intellij - 转到文件 - 项目结构 - 库中。确保如果你通过Intellij运行,你可以看到库jdbc
  2. 如果您通过直接 Java 命令运行 DBManager,请确保传递 -cp 参数,如java -cp "somepath/lib/*" mypackage.MainClass

相关内容

最新更新