一尘不染

Java从命令行运行JAR文件并指定类路径

java

我已经编译了一个JAR文件,并在清单中指定了Main-Class(我使用了Eclipse Export函数)。我的依赖项都在标有的目录中lib。在指定应将JAR文件lib/*用作类路径的同时,我似乎无法获得关于如何执行我的JAR文件的直接答案。

我试过了:

]$ java -jar -cp .:lib/* MyJar.jar
]$ java -cp .:lib/* -jar MyJar.jar
]$ java -cp .:lib/* com.somepackage.subpackage.Main

等等…

每个都给出一个错误说:

Error: Could not find or load main class ....

或NoClassDefFoundError指示未找到库。

我什至尝试重新制作JAR文件,并包括lib目录和内容,但仍然没有问题。

如何从命令行执行JAR文件并指定要使用的类路径?


阅读 2978

收藏
2020-03-06

共1个答案

一尘不染

指定-jar后,该-cp参数将被忽略。

从文档中:

使用此选项时,JAR文件是所有用户类的源,而其他用户类路径设置将被忽略。

你也不能将所需的jar文件“包含”到另一个jar文件中(你需要提取它们的内容并将.class文件放入你的jar文件中)

你有两种选择:

lib目录中的所有jar文件都包含到清单中(你可以在其中使用相对路径)
使用以下命令在命令行中指定所有内容(包括 jar)-cp: java -cp MyJar.jar:lib/* com.somepackage.subpackage.Main

2020-03-06