我有一个 .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 文件?
2个选择给你
更改您的调用
java -cp <class-path-of-all-required-jars> <Main.class>
build uber/fat jar - 组合所有单独的 jar。那么你可以这样你的 -jar 东西
好吧,我也有类似的问题,尽管我没有使用 -jar 选项。您的 jar 文件是可自动运行的 jar 吗? (一个带有清单文件的 jar,告诉类路径,并告诉哪个是“主”类)
如果是这种情况,请检查清单是否具有正确命名的变量(类路径),并检查是否写错了任何由空格分隔的路径(有关清单文件的 baeldung 教程)
如果您还没有编写自定义清单,那么您应该删除“-jar”选项,并看看我的解释的以下部分:
一般情况:(假设您的罐子位于两个不同的文件夹中):
语法是
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