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

2022-08-31 07:49:48

我已经编译了一个JAR文件,并在清单中指定了Main-Class(我使用了Eclipse导出功能)。我的依赖项都在标记为 的目录中。我似乎无法直接回答如何执行我的JAR文件,同时指定它应该使用作为类路径。liblib/*

我试过了:

]$ 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 文件并指定要使用的类路径?


答案 1

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

文档中

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

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

您有两种选择:

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

答案 2

运行一个 jar 文件并指定一个类路径,如下所示:

java -cp <jar_name.jar:libs/*> com.test.App

jar_name.jar是要执行的 JAR 的全名

libs/*是通往依赖关系 JAR 的路径

com.test.App是具有该方法的 JAR 中的类的完全限定名main(String[])

jar 和依赖 jar 应具有执行权限。


推荐