Java类路径和相对路径

时间:2013-05-11 23:24:31

标签: java classpath

如果在java类路径中有相对路径,那么这只是搜索当前工作目录。对清单文件中声明的类路径是否保持相同。在清单文件中,它是相对于jar所在的目录吗?

实施例。 CMDLINE

java -cp somejar.jar

或者

清单

Class-Path: somejar.jar

2 个答案:

答案 0 :(得分:8)

如果您说-cp somejar.jar,则要将somejar.jar添加到类路径中。它只会尝试在您键入命令时从您当前所在的目录中找到somejar.jar

如果你在Manifest中说

Class-Path: somejar.jar

你是说将jar somejar.jar添加到清单所在目录(也就是jar内)的类路径中。

作为旁注,当您使用-jar,-cp或-classpath指定类路径时,将覆盖系统变量CLASSPATH。

可在此处找到更多详情,http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

答案 1 :(得分:4)

你实际上提到了两种不同的情况:

案例#1

java -cp foo/bar/somejar.jar ...

在这种情况下,相对于当前目录解析JAR(或其他)的相对路径。

案例#2

java -jar foo/bar/somejar.jar ...

其中somejar.jar包含

Class-Path: anotherjar.jar

在这种情况下,相对于当前目录解析“foo / bar / somejar.jar”(如上所述),但相对于包含“somejar.jar”的目录解析“anotherjar.jar”。

(旁白:我的理解是,当通过-cp$CLASSPATH包含JAR文件时,会遵守Manifest Class-Path:属性,但它只会影响从该JAR加载的类的依赖关系...请参阅下面的“查找类”链接。)

参考文献: