[英]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.