Java类路径和相对路径(Java Classpath and relative paths)

2019-09-02 16:33发布

如果您在Java类路径的相对路径,这是否只是搜索当前工作目录。 对于是否在清单文件中声明的类路径相同的保持。 在manifest文件是相对于目录罐子吗?

防爆。 CMDLINE

java -cp somejar.jar

要么

表现

Class-Path: somejar.jar

Answer 1:

如果你说-cp somejar.jar要添加somejar.jar到classpath中。 它只会试图找到somejar.jar从您目前在当你键入的命令的目录。

如果您在清单说

Class-Path: somejar.jar

你说加罐子, somejar.jar成从那里清单位于(又名罐内)目录中的类路径。

作为一个方面说明,当您使用的罐子,-cp或-classpath指定的类路径,则覆盖系统变量CLASSPATH。

更多详细信息可以在这里找到, http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html



Answer 2:

实际上,你刚才提到两种不同的情况:

情况1

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

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

案例#2

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

其中somejar.jar包含

Class-Path: anotherjar.jar

在这种情况下为“foo /酒吧/ somejar.jar”是相对于当前目录(如上)解决,但是“anotherjar.jar”相对于包含“somejar.jar”的目录被解决。

(旁白:我的理解是,Class-Path清单:当通过包括JAR文件的属性被尊重-cp$CLASSPATH ,但只会影响从JAR加载的类的依赖关系......看到“findingclasses”链接下面。)

参考文献:

  • http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html
  • http://docs.oracle.com/javase/7/docs/technotes/tools/findingclasses.html
  • http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html
  • http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html


文章来源: Java Classpath and relative paths