[英]Java Classpath and relative paths
如果在java类路径中有相对路径,那么这只是搜索当前工作目录。 对清单文件中声明的类路径是否保持相同。 在清单文件中它是相对于jar所在的目录?
防爆。 CMDLINE
java -cp somejar.jar
要么
表现
Class-Path: somejar.jar
如果你说-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
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加载的类的依赖关系...请参阅“查找类”链接下面。)
参考文献:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.