Java: 如何从命令行导入 jar 文件

我尝试用 Java 从命令行(Windows)调用一个类(main 方法)。
该类导入其他类(其他 jar)。

我总是从我的主程序导入的类中得到“类未发现异常”。

我试过这么做:

  • 添加一个 CLASSPATHenv.var,其中包含引用的库所在的路径(不工作)

  • 当从命令行调用“ java -jar myjar.jar”时,我尝试了所有这些不同的参数: “ -classpath lib/”、“ -classpath ./lib/”、“ -classpath lib”、“ -cp lib/*”、“ -cp lib/\*”、“ -classpath lib/referenced-class.jar”、“ -classpath ./lib/referenced-class.jar”(lib 是引用的 jar 所在的位置)

  • 我尝试将所有引用的 jar 打包到我的 jar 中,我的主类就驻留在这个 jar 中..。

  • 除此之外,我还尝试用以下方法指定 Manifest 文件中的类: Class-path referenced-jar.jar和我也尝试了 Class-path lib/referenced-jar.jar

216127 次浏览

如果使用 java -jar运行 jar 文件,则使用 -classpath参数 被忽略了。您需要在 jar 的清单文件中设置类路径,如下所示:

Class-Path: jar1-name jar2-name directory-name/jar3-name

请参阅 Java 教程: 将类添加到 JAR 文件的类路径

编辑: 我看到您已经尝试在清单中设置类路径,但是您确定使用了正确的语法吗?如果你跳过“ Class-Path”之后的“ :”,就像你展示的那样,它不会工作。

您可以尝试在 eclipse 中导出为“ Runnable jar”。我也有问题,当我导出为“ jar”,但我从来没有问题,当我导出为“ Runnable jar”。

试试看

java -cp "your_jar.jar:lib/referenced_jar.jar" com.your.main.Main

如果在窗口上,应该使用 ;而不是 :

如果您恰好知道要运行的主类的名称,那么您可以不使用 -jar命令行参数来运行它:

java -classpath .;myjar.jar;lib/referenced-class.jar my.package.MainClass

如果您正在使用 linux,那么您应该在类路径中使用“ :”而不是“ ;”。