java - 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>
解决方案
看起来 postgresql 工件没有打包到 xyz.jar 中。在您的情况下,postgresql jar 必须与 xyz.jar - xyz.jar - postgresql-42.1.4.jar 处于同一级别
这将起作用。
对于 java 应用程序,所需的 jar 文件安装在 lib 文件夹中,并且应用程序从该文件夹中解析了依赖项。
推荐阅读
- javascript - 从本地机器访问 firebase 数据库
- laravel - Vuejs 是否需要 FormData 对象才能将文件上传到 laravel 后端?
- python - 为什么 UserDict 的 __copy__ 和 copy() 的行为不一致
- swift - 快速将多个图像从集合视图保存到 Firebase 存储并获取 downloadURL?
- node.js - TeamCity、NodeJS 和 API 测试
- pyqt5 - 按下按钮时创建按钮
- python - 从 Google 抓取/提取 Skype ID
- angular - 如何在 Angular 中使用 ngModel 预填充表单
- ios - 如何获取 NSPropertyDescription 属性的新旧值
- javascript - 有没有办法让类构造函数像普通函数一样被调用?