我的项目是一个maven项目,我使用JDBC-postgres驱动程序在Java程序中运行一些查询。我使用maven-jar-plugin在maven构建上获取了一个可执行jar。当我以java -jar xyz.jar运行jar时,我得到
“线程“主”中的异常” java.lang.ClassNotFoundException: org.postgresql.Driver“
我检查了manifest.mf文件,并在类路径中看到了postgres,如下所示:
Class-Path:postgresql-42.1.4.jar
请支持分辨率。相同的代码与Java应用程序一样运行良好。仅当它是一个jar文件时,它才会产生问题。
pom.xml中的Maven-jar-plugin如下:
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.1.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>
com.app.App
</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
答案 0 :(得分:0)
看起来PostgreSQL工件没有打包到xyz.jar中。 在您的情况下,postgresql jar必须与xyz.jar处于同一级别 -xyz.jar -postgresql-42.1.4.jar
这将起作用。
对于Java应用程序,所需的jar文件安装在lib文件夹中,应用程序从该文件夹中解析了依赖项。