在命令行中运行与另一个.jar文件有依赖关系的.jar文件

问题描述 投票:0回答:2

我有一个 .jar 文件(insertdata.jar),它与 postgresql-42.2.23.jar 具有依赖关系。我也在清单文件中包含了主类。目前这两个文件都位于 C:\Users\yush\Desktop\java 目录中。我尝试在命令行中使用以下命令运行 insertdata1.jar 文件。

java -jar C:\Users\yush\Desktop\java\insertdata1.jar

使用此命令我收到以下错误,这似乎无法访问 postgresql-42.2.23.jar 类。

java.lang.ClassNotFoundException:org.postgresql.Driver

我的问题是如何使用 postgresql-42.2.23.jar 在命令行中运行 insertdata1.jar 文件?

java postgresql command-line dependencies executable-jar
2个回答
1
投票

2个选择给你

  1. 更改您的调用

    java -cp <class-path-of-all-required-jars> <Main.class>

  2. build uber/fat jar - 组合所有单独的 jar。那么你可以这样你的 -jar 东西


0
投票

好吧,我也有类似的问题,尽管我没有使用 -jar 选项。您的 jar 文件是可自动运行的 jar 吗? (一个带有清单文件的 jar,告诉类路径,并告诉哪个是“主”类)

如果是这种情况,请检查清单是否具有正确命名的变量(类路径),并检查是否写错了任何由空格分隔的路径(有关清单文件的 baeldung 教程

如果您还没有编写自定义清单,那么您应该删除“-jar”选项,并看看我的解释的以下部分:

一般情况:(假设您的罐子位于两个不同的文件夹中):

  • 假设 jar1 没有依赖项,jar2 依赖于 jar1。

语法是

java path/to/jar2/jar2.jar;path/to/jar1/jar1.jar  (whitespace)  packageNameOf.jar2.mainclass/MainClassName
(或者在你的情况下,
java C:\Users\yush\Desktop\java\insertdata1.jar;path/to/your/postgreDriver/postgresql-42.2.23.jar mainPackage/Main

如果我们只想在引用外部 jar 的 .class 上运行 java 该怎么办?

java path/to/jar2/;path/to/jar1/jar1.jar  packageNameOf.jar2.mainclass/MainClassName

© www.soinside.com 2019 - 2024. All rights reserved.