从命令行运行JAR文件并指定classpath

我编译了一个JAR文件,并在清单中指定了Main-Class(我使用了Eclipse Exportfunction)。 我的依赖关系都在lib目录下。 我似乎无法得到直接的答案如何执行我的JAR文件,同时指定它应该使用lib/*作为类path。

我试过了:

 ]$ 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指示没有find库。

我什至试图重buildJAR文件,并包括lib目录和内容,但仍然没有骰子…

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

当你指定-jar-cp参数将被忽略。

从文档 :

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

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

你有两个select:

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

运行一个jar文件并像下面这样指定一个类path:

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

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

libs/*是您的依赖JAR的path

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

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