运行 java 时包含外部 jar -jar

2022-09-01 02:24:58

根据我的阅读,当您执行以下操作执行命令时:

java -jar foo.jar

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

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

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

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

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

那么,如何包含外部 jar 的绝对路径,这些路径存在于系统上,但不存在于正在执行的 jar 文件中?


答案 1

有没有理由避免调用主类,例如

java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname

?

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


答案 2

您可以在拥有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

推荐