java -jar:什么是默认的类路径?

时间:2016-08-28 07:18:40

标签: java jar classpath manifest

在jar文件中,MANIFEST.mf包含以下行:

风格A:

Class-Path: .

风格B:

Class-Path: . eric-java-util_lib/tomcat-api.jar

样式C:

// No `Class-Path` specified.

问题:

  1. 在样式B中,Class-Path指定的jar是否与当前jar的dir相关?
  2. 然后在风格A和B中,.是什么意思?它是未压缩的jar根目录,还是当前jar的驻留目录?我想应该是后来的,但不确定。
  3. 看来课程&除MANIFEST.mf之外的所有3个样式的类路径中都包含了包,是.?或者,java -jar的默认类路径只是解压缩jar文件的根目录?

2 个答案:

答案 0 :(得分:2)

当您使用 java -jar时,以下情况适用:

  

在样式B中,Class-Path指定的jar是否与驻留当前jar的目录有关?

它与所有风格的“当前jar的居住目录”有关。

  

然后在风格A和B中,做什么。意思?

表示.jar文件所在的目录。

  

是未压缩的jar根目录

没有

  

或当前jar的居住目录?

  

我想它应该是后者,但不确定。

是。确定。

  

似乎课程&除了MANIFEST.mf之外的所有包都包含在所有3种样式的classpath中,是不是因为。?

我不知道除了MANIFEST.mf之外还有什么意思。

  

或者,java -jar的默认类路径只是uncompress jar文件的根目录?

。{1}}除了.jar文件本身以及java -jar清单条目中指定的内容之外,没有默认的类路径。

答案 1 :(得分:0)

  

在样式B中,Class-Path指定的jar是否与当前jar的dir相关?

是的(参见下面的Java SE文档说明)。

  

然后在风格A和B中,.是什么意思?它是未压缩的jar根目录,还是当前jar的驻留目录?我想它应该是后者,但不确定。

它是jar的驻留目录(参见下面的Java SE文档)。

  

似乎课程&除MANIFEST.mf之外的所有3个样式的类路径中都包含了包,是.?或者,java -jar的默认类路径只是解压缩jar文件的根目录?

Java SE Documentation: How the Java Launcher Finds User Classes中所述:

  

默认值"。",表示用户类文件是当前目录中的所有类文件(如果在包中,则位于其下)。

     

...

     

-jar选项指定的JAR存档,它覆盖所有其他值。如果使用此选项,则所有用户类必须来自指定的存档。