ClassNotFoundException:org.postgresql.Driver以jar文件运行项目

时间:2018-07-11 12:38:27

标签: java postgresql maven jdbc

我的项目是一个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>

1 个答案:

答案 0 :(得分:0)

看起来PostgreSQL工件没有打包到xyz.jar中。 在您的情况下,postgresql jar必须与xyz.jar处于同一级别 -xyz.jar -postgresql-42.1.4.jar

这将起作用。

对于Java应用程序,所需的jar文件安装在lib文件夹中,应用程序从该文件夹中解析了依赖项。