从命令行运行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:
- 将
lib
目录中的所有jar文件包含到清单中(可以使用相对path) - 使用
-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应该有执行权限。