【问题标题】:ClassNotFoundException:org.postgresql.Driver on running project as jar fileClassNotFoundException:org.postgresql.Driver 将项目作为 jar 文件运行
【发布时间】:2018-12-19 12:10:01
【问题描述】:

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

【问题讨论】:

  • 您是否将其作为 JAR 运行,并将依赖项打包到 JAR 中?如果没有,Postgres JAR 驻留在哪里?看到这个:stackoverflow.com/questions/18413014/…
  • 它在 maven 依赖中..就是这样。我已经添加了 pom。
  • 当你尝试执行postgresql-42.1.4.jar和你自己的jar在同一个文件夹下吗?如果不是:那是你的问题。
  • 有没有办法将所有 maven 依赖项放入同一个 jar 中?喜欢..打包依赖项?

标签: java postgresql maven jdbc


【解决方案1】:

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

这会奏效的。

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

【讨论】:

猜你喜欢
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 2018-01-28
相关资源
最近更新 更多