运行java -jar时包含外部jar

时间:2010-05-26 04:48:06

标签: java jar classpath manifest.mf

从我的阅读中,当您按如下方式执行命令时:

java -jar foo.jar

然后忽略主类路径,并从清单文件中获取类路径。

此外,还会忽略在命令行上声明的类路径。所以在:

java -classpath /usr/local/jar/foobar.jar -jar foo.jar

/usr/local/jar/foobar.jar被忽略。

最后,我已经读过清单文件只能在jar文件中包含相对路径。

那么,如何在系统中包含外部jar的绝对路径,而不是在正在执行的jar文件中呢?

2 个答案:

答案 0 :(得分:39)

您可以在拥有jar文件的文件夹中创建一个文件夹,比如lib。

Manifest.MF内容可以是:

Main-Class: com.mastergaurav.test.app.MainClass
Class-Path: lib/one.jar lib/two.jar

文件夹内容:

mainFolder/
   * lib/one.jar
   * lib/two.jar
   * my-main.jar

执行:

java -jar my-main.jar

答案 1 :(得分:39)

是否有理由避免像

那样调用主类
java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname

这种类型的调用允许您将绝对路径与相对路径混合。将它放入shell脚本或批处理文件中,以避免实际输入或记住完整的类路径以简化操作。