41

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

java -jar foo.jar

然后主类路径被忽略,类路径取自清单文件。

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

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

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

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

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

4

2 回答 2

44

您是否有理由避免调用主类,例如

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

?

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

于 2010-05-26T04:53:06.367 回答
42

您可以在拥有 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
于 2010-05-26T04:52:45.023 回答