首页 > 解决方案 > ClassNotFoundException:org.postgresql.Driver 将项目作为 jar 文件运行

问题描述

我的项目是一个 maven 项目,我使用 JDBC - postgres 驱动程序在 java 程序中运行一些查询。我使用 maven-jar-plugin 在 maven build 上获取可执行 jar。当我将 jar 作为 java -jar xyz.jar 运行时,我得到

“线程“主”java.lang.ClassNotFoundException 中的异常:org.postgresql.Driver”

我检查了 manifest.mf 文件,我可以在类路径中看到 postgres,如下所示:

类路径: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>

标签: javapostgresqlmavenjdbc

解决方案


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

这将起作用。

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


推荐阅读