运行 java -jar 时包含外部 jar

发布于 2024-09-02 19:19:24 字数 344 浏览 14 评论 0原文

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

java -jar foo.jar

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

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

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

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

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

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

From my readings, when you execute a command as follows:

java -jar foo.jar

Then the main classpath is ignored, and the classpath is taken from the manifest file.

Further, the classpath declared on the command line is also ignored. So in:

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

/usr/local/jar/foobar.jar is ignored.

Lastly, I have read that the manifest file can only contain relative paths, within the jar file.

So, how do you include absolute paths to external jars, that are present on the system, but not in the jar file being executed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猥︴琐丶欲为 2024-09-09 19:19:24

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

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

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

Is there a reason why you are avoiding invoking the main class like

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

?

This type of invocation allows you to mix absolute paths with relative paths. Put this into a shell script or batch file to avoid having to actually type or remember the full classpath to simplify things.

夏了南城 2024-09-09 19:19:24

您可以在包含 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

You can create a folder, say lib, within the folder where you have the jar file.

Manifest.MF contents can be:

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

Folder contents:

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

To execute:

java -jar my-main.jar
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文