Java中Postgres驱动安装异常:ClassNotFoundException求助
解决
java.lang.ClassNotFoundException: org.postgresql.Driver的方案 核心原因
直接执行java Main时,JVM的类路径(classpath)未包含PostgreSQL驱动jar包。Maven的install和compile仅完成编译操作,不会自动将依赖加入运行时类路径。
具体解决步骤
方法1:用Maven exec插件运行(最推荐,适合新手)
无需手动处理类路径,直接通过Maven调度运行:
- 在项目根目录执行命令:
注意:Java要求类名与文件名严格一致,你的文件mvn exec:java -Dexec.mainClass="com.main.Main"src/main/java/com/main/main.java需改名为Main.java,类定义也需对应为public class Main。
方法2:手动指定类路径运行
若坚持使用java命令,需手动将驱动jar包加入类路径:
- 找到Maven下载的PostgreSQL驱动jar包,默认路径:
- Linux/macOS:
~/.m2/repository/org/postgresql/postgresql/42.2.23/postgresql-42.2.23.jar - Windows:
C:\Users\你的用户名\.m2\repository\org\postgresql\postgresql\42.2.23\postgresql-42.2.23.jar
- Linux/macOS:
- 进入编译后的class文件目录(Maven默认输出目录为
target/classes) - 执行运行命令:
- Windows(用
;分隔路径):java -cp ".;完整的驱动jar包路径" com.main.Main - Linux/macOS(用
:分隔路径):java -cp ".:完整的驱动jar包路径" com.main.Main
- Windows(用
方法3:打包成可执行jar(适合分发场景)
通过Maven插件将依赖与代码打包成单个可执行jar:
- 在
pom.xml的build节点下添加插件配置:<plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.main.Main</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> - 执行打包命令:
mvn clean package - 在
target目录找到形如项目名-版本号-jar-with-dependencies.jar的文件,运行:java -jar target/项目名-版本号-jar-with-dependencies.jar
额外注意事项
- 确认
pom.xml中的PostgreSQL依赖配置正确:<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.23</version> </dependency> - 严格遵循Java命名规范:类名首字母大写,文件名与类名完全一致。
内容的提问来源于stack exchange,提问作者plutownium
相关产品推荐
相关产品推荐

