提问人:George Charitakis 提问时间:11/15/2023 更新时间:11/16/2023 访问量:44
Eclipse抛出“java.lang.ClassNotFoundException: org.postgresql.Driver”异常,尽管我已将JDBC驱动程序放在项目的类路径[重复]中
Eclipse throws "java.lang.ClassNotFoundException: org.postgresql.Driver" exception, although I have put the JDBC driver in project's classpath [duplicate]
问:
我正在使用 JDBC 和 Eclipse 为一个大学项目构建一个登录系统,IDE.As GUI 有两个用于用户名和密码的文本字段以及一个登录按钮。为此,我创建了一个名为 BDConnection 的类,该类与数据库进行连接,其代码如下:
package application;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static final String username = "username";
private static final String password = "password";
private static final String url = "jdbc:postgresql://dbname";
static Connection getConnection() {
Connection con = null;
try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(url,username,password);
}catch(SQLException eSQL) {
eSQL.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}
return con;
}
}
另外,由于我使用 JavaFX,因此我创建了另一个类 LoginSignUpController,它包含登录按钮侦听的方法:
package application;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
public class LoginSignUpController {
@FXML
TextField usernameTxtField;
@FXML
PasswordField PasswdTxtFiled;
private PreparedStatement prepStmnt;
private ResultSet rs;
public void login(ActionEvent e) {
String user = usernameTxtField.getText();
String passwd = PasswdTxtFiled.getText();
String query = "SELECT * FROM USERS WHERE USERNAME=? AND PASSWD=?";
try {
prepStmnt = DBConnection.getConnection().prepareStatement(query);
prepStmnt.setString(1, user);
prepStmnt.setString(2, passwd);
rs = prepStmnt.executeQuery();
if(rs.next()) {
System.out.println("User found");
}else {
System.out.println("User not found");
}
rs.close();
prepStmnt.close();
} catch (SQLException e1) {
e1.printStackTrace();
}catch(NullPointerException e2) {
e2.printStackTrace();
}
}
}
应用程序一直向我抛出“java.lang.ClassNotFoundException: org.postgresql.Driver”,尽管我在类路径中添加了 JDBC 驱动程序。我还尝试在模块路径中添加外部jar,但仍然一无所获。可能是什么问题?
答:
0赞
David Weber
11/16/2023
#1
仅针对其他人:解决方案是将外部 JAR 添加到运行时类路径中,而不仅仅是项目类路径中。
“你可能已经把它放在你的项目类路径上,但它是否放在你的 运行时类路径?“——马克·罗特维尔
评论
module-info
Class.forName("org.postgresql.Driver");
forName