java - 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 完全相同的功能的函数时,我会收到一个 java.lang.ClassNotFoundException 就Class.forName
行了。当然,下面的每一行都有例外。
这是 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 包围我的代码时,一切正常
解决方案
- 在 Intellij - goto 文件 - 项目结构 - 库中。如果您通过 Intellij 运行,请确保您可以看到库 jdbc
- 如果您通过直接 Java 命令运行 DBManager,请确保传递 -cp 参数,例如
java -cp "somepath/lib/*" mypackage.MainClass
推荐阅读
- java - 如何在 log4j2.xml 中动态设置日志文件路径
- jenkins - Jenkins Pipeline 中的 StreamingTemplateEngine 与普通 groovy 中的 StreamingTemplateEngine
- yii2 - Yii2:覆盖第 3 方邮件视图
- haskell - Haskell - 查找节点值的路径
- javascript - 启用/禁用动态引导工具提示
- docker - 带有网络核心的 Docker Healcheck
- django - Django 过滤器 - ModelChoiceFilter 字段中的不同值
- java - JavaFx 错误:应用程序启动方法中的异常
- ios - 线程 1:EXC_BAD_ACCESS(代码=1,地址=0x48)
- java - 缩短命令行的类路径 (-cp)