从命令行使用依赖项运行jar

时间:2018-10-27 18:45:48

标签: java jar

Java可以从命令行运行jar文件,如下所示:

java -jar foobar.jar

但是,如果foobar.jar依赖于baz.jar,则一旦调用baz.jar中的任何类,以上内容都会引发异常,因为JVM无法知道位置寻找这些。

但是,手册页(Linux上为OpenJDK 8)指出:

  

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

如果不能重新打包,是否可以通过命令行运行具有相关性的jar文件?

2 个答案:

答案 0 :(得分:3)

使用java -jar时,未在命令行上指定依赖项。 您可以通过2种方式将jar添加到类路径:

  1. 使用主类调用java,并在命令行上添加jar文件,包括您的foobar.jar

    java -cp foobar.jar:baz.jar com.mycompany.MainClass
    
  2. foobar.jar的清单文件中包含依赖项(然后运行java -jar

    Class-Path: baz.jar
    

答案 1 :(得分:0)

我相信您在foobar.jar中只有一个“主”类。如果大于1,则需要指定执行哪个。
您可以在执行jar

之前简单地设置类路径
export CLASSPATH=$CLASSPATH:/JAR_LOCATION/bar.jar