Java可以从命令行运行jar文件,如下所示:
java -jar foobar.jar
但是,如果foobar.jar
依赖于baz.jar
,则一旦调用baz.jar
中的任何类,以上内容都会引发异常,因为JVM无法知道位置寻找这些。
但是,手册页(Linux上为OpenJDK 8)指出:
使用
-jar
选项时,指定的JAR文件是所有用户类的源,而其他类路径设置将被忽略。
如果不能重新打包,是否可以通过命令行运行具有相关性的jar文件?
答案 0 :(得分:3)
使用java -jar
时,未在命令行上指定依赖项。
您可以通过2种方式将jar添加到类路径:
使用主类调用java
,并在命令行上添加jar文件,包括您的foobar.jar
:
java -cp foobar.jar:baz.jar com.mycompany.MainClass
在foobar.jar
的清单文件中包含依赖项(然后运行java -jar
)
Class-Path: baz.jar
答案 1 :(得分:0)
我相信您在foobar.jar中只有一个“主”类。如果大于1,则需要指定执行哪个。
您可以在执行jar
export CLASSPATH=$CLASSPATH:/JAR_LOCATION/bar.jar