Java Maven项目打包成Jar后出现PostgreSQL无合适驱动问题求助
问题:打包Jar后PostgreSQL驱动找不到(IDE运行正常)
我开发的Java应用需要连接PostgreSQL,在IntelliJ中编写和测试代码时完全正常,但将其打包为.jar文件后,出现No Suitable Driver Found错误。已使用7zip检查打包后的文件,确认postgresql库已包含其中。
项目pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.app.app</groupId> <artifactId>trac</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.7.2</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.2</version> </dependency> </dependencies> </project>
数据库连接代码
(IDE中运行完全正常)
package com.app.app.db; import lombok.Getter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseSession { @Getter private static Connection connection; public static void Initialise(String uri, String user, String password) { try { Class.forName("org.postgresql.Driver"); System.out.println("Loaded PostgreSQL JDBC Driver"); try { System.out.println("Attempting to connect to PostgreSQL database..." + uri + " " + user); connection = DriverManager.getConnection(uri, user, password); if (connection != null) { System.out.println("Successfully connected to PostgreSQL database: " + connection.getSchema()); } } catch (SQLException e) { e.printStackTrace(); } } catch (ClassNotFoundException e) { System.out.println("Class not found " + e); } } }
已尝试的解决方法
- 使用IntelliJ内置构建工具生成jar
- 执行
mvn clean后再执行mvn package - 使用Maven Shade插件(已知该插件曾解决过类似问题)
内容的提问来源于stack exchange,提问作者demonLaMagra
相关产品推荐
相关产品推荐

