java - Java:连接到 psql 数据库会引发错误 (ClassNotFoundException)
问题描述
我是 Java 新手,我试图连接到我的本地 PSql 数据库但没有成功,在代码和错误的详细信息下方。
我有 2 个文件:DbContract.java 和 TestConnection.java,我正在使用 Eclipse。
DbContract.java
package dbcontract.db;
public interface DbContract {
public static final String HOST = "jdbc:postgresql://localhost:5432/";
public static final String DB_NAME = "db_notespesa";
public static final String USERNAME = "postgres";
public static final String PASSWORD = "";
}
测试连接.java
package dbcontract;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import dbcontract.db.DbContract;
public class TestConnection {
public static void main(String[] args) {
try {
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection(
DbContract.HOST+DbContract.DB_NAME,
DbContract.USERNAME,
DbContract.PASSWORD);
System.out.println("DB connected");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
错误:
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at TestConnection.main(TestConnection.java:13)
解决方案
您需要添加 Postgress 驱动程序的依赖项,如错误说明,如果您使用的是 maven,只需将其添加到 pom.xml :
<`<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.5</version>
</dependency>
更新了评论中提到的 Mark 版本,这里是 maven repo 上所有版本的链接: https ://mvnrepository.com/artifact/org.postgresql/postgresql
推荐阅读
- html - CSS 仅使用 flexbox 显示/隐藏内容
- python - 当我使用 VPN 时,Selenium(使用 Python)没有启动
- elasticsearch - 如何通过给定的标准获取最后一个和第一个文档 ID
- google-kubernetes-engine - 在 GKE 上安装 kiali 会导致后端 NotFound 错误
- angular - 带有 [hidden] 的角加载微调器不会更新
- c# - 第一次序列化成功,第二次失败?为什么?
- vue.js - vue表渲染中的无限循环警告
- ios - Swift:使用时间戳渲染转录
- python - 来自手动标记的 Span 的 ENT_TYPE 模式不起作用
- python-3.x - Python3 - 如何从列表中读取单词作为键,然后计算它们的出现并将其作为值存储到键中