Java 何时检查和使用Jar文件中的类路径属性

Java 何时检查和使用Jar文件中的类路径属性,java,classpath,manifest,Java,Classpath,Manifest,我有一个学术问题,我没有找到Sun/Oracle提供的适当文档 我有一组Jar文件,java vm的启动方式如下: java -cp one.jar:two.jar:helper.jar my.company.project.Main 如您所见,我没有使用-jar选项,而是提供了一个类路径。 jar只有一个清单文件,它定义了一个类路径,其中包含所需的其余jar文件 由于我没有使用-jar命令行选项,我想知道是否计算并使用了清单类路径。(是的,我知道-jar做什么,我知道主类的用途,我知道如何将

我有一个学术问题,我没有找到Sun/Oracle提供的适当文档

我有一组Jar文件,java vm的启动方式如下:

java -cp one.jar:two.jar:helper.jar my.company.project.Main
如您所见,我没有使用-jar选项,而是提供了一个类路径。 jar只有一个清单文件,它定义了一个类路径,其中包含所需的其余jar文件

由于我没有使用-jar命令行选项,我想知道是否计算并使用了清单类路径。(是的,我知道-jar做什么,我知道主类的用途,我知道如何将类路径与-jar结合使用。我只是不知道如果不使用-jar,它是否可以

或者澄清我的问题:它工作可靠吗?是否在Sun/Oracle官方文档中有记录


谢谢

JAR文件清单中的类路径条目总是用于从该JAR加载类时扩展类路径。无论您是否使用
-jar
开关,这都没有什么区别

事实上,我对这种行为感到惊讶,但通过一个使用两个类a和B的简单示例很容易重现这种行为。让a引用B。将每个类放在自己的JAR文件中。将清单添加到a.jar,其中包括
类路径:B.jar
。然后,下面的命令将正确解析B:
java-cpa.jar A


Java启动器如何查找JAR类路径类一节也介绍了这一点。

据我所知,
Main class
class path
仅在使用
-JAR
时使用。@JoachimSauer我恐怕你错了。清单中的类路径也在没有-jar开关的情况下使用。见下面我的答案。很容易用两个类和两个JAR文件构建一个小样本来证明它。感谢@JoachimSauer指出我在回答中写了“-JAR”的地方犯了一个错误。我把它改成“-cp”。它与“-cp”一起工作,我真的用“-cp”对它进行了测试。在我的答案的第一个版本中,我写了“java-jar A.jar A”,这当然是错误的,因为我想指出,它即使不使用“-jar”也能工作。这个错误现在已经纠正了。