何时检查并使用Jar文件中的Class-Path属性

时间:2011-05-05 15:19:49

标签: java classpath manifest

我有一个学术问题,我没有从Sun / Oracle找到适当的documentatino。

我有一组Jar文件,java vm就像这样启动:

java -cp one.jar:two.jar:helper.jar my.company.project.Main

如您所见,我不使用 -jar 选项,而是提供类路径。 helper.jar 只有一个清单文件,用于定义包含所需剩余jar文件的Class-Path。

由于我没有使用 -jar 命令行选项,我想知道是否评估并使用了该清单Class-Path。 (是的,我知道 -jar 的作用,我知道Main-Class的用途是什么,我知道如何将Class-Path与 -jar 结合使用。我只不知道它是否有效没有使用 -jar

或者澄清一下我的问题:它是否可靠运行并且在Sun / Oracle官方文档中有记录?

谢谢

1 个答案:

答案 0 :(得分:1)

来自JAR文件清单的类路径条目始终用于在从该JAR加载类时扩展类路径。如果您使用-jar开关,它没有任何区别。

事实上,我对这种行为感到很惊讶,但是使用两个A和B类的简单示例很容易复制。让A引用B.将每个类放在自己的JAR文件中。向A.jar添加包含Class-Path: B.jar的清单。然后,以下命令将正确解析B:java -cp A.jar A

此处还介绍了How the Java Launcher Finds JAR-class-path Classes部分 Java Launcher如何查找JAR类路径类