从我的阅读中,当您按如下方式执行命令时:
java -jar foo.jar
然后忽略主类路径,并从清单文件中获取类路径。
此外,还会忽略在命令行上声明的类路径。所以在:
java -classpath /usr/local/jar/foobar.jar -jar foo.jar
/usr/local/jar/foobar.jar被忽略。
最后,我已经读过清单文件只能在jar文件中包含相对路径。
那么,如何在系统中包含外部jar的绝对路径,而不是在正在执行的jar文件中呢?
答案 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脚本或批处理文件中,以避免实际输入或记住完整的类路径以简化操作。