jdkTool -classpath path2;path3... C:> set CLASSP..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

classpath詳解

發(fā)布時間:2020-08-11 00:25:39 來源:ITPUB博客 閱讀:151 作者:cxck 欄目:編程語言
可通過對 JDK 工具使用 -classpath 選項(xiàng)(首選方法)或設(shè)置 CLASSPATH 環(huán)境變量來設(shè)置類路徑。 [@more@]C:> jdkTool -classpath path2;path3...
C:> set CLASSPATH=path2;path3...
每個 path 以文件名或目錄結(jié)尾,該文件名或目錄取決于將類路徑設(shè)置成什么:
對于包含 .class 文件的 .zip 或 .jar 文件,路徑以 .zip 或 .jar 文件名結(jié)尾。
對于未命名包中的 .class 文件,路徑以包含 .class 文件的目錄結(jié)尾。
對于已命名包中的 .class 文件,路徑以包含“root”包(完整包名中的第一個包)的目錄結(jié)尾。
用分號來分隔多個項(xiàng)目。使用 set 命令時,需要省略等號兩邊的空格(=)。其中 jdkTool 可以為 java、javac、javadoc,等等。有關(guān)詳細(xì)列表,參見 JDK 開發(fā)工具。
說明
類路徑告訴 Java 應(yīng)用程序去哪里查找第三方和自定義類 -- 即不是 Java 擴(kuò)展或 Java 平臺一部分的類。在 JDK 1.2 中,JVM 和其他 JDK 工具通過依次搜索平臺庫、庫擴(kuò)展和類路徑來查找類(有關(guān)搜索策略的詳細(xì)信息,參見如何查找類)。
多數(shù)應(yīng)用程序的類庫都會充分利用擴(kuò)展機(jī)制。因此,只有想要加載某個類庫 (a) 未位于當(dāng)前目錄或其分枝包中 且 (b) 未位于擴(kuò)展機(jī)制所指定的位置時,才需設(shè)置類路徑。

如果用戶是從舊版本 JDK 升級而來,則啟動設(shè)置可能包括不再需要的 CLASSPATH 設(shè)置。這時應(yīng)該刪除任何非應(yīng)用程序特定的設(shè)置。有些使用 Java 虛擬機(jī)的第三方應(yīng)用程序可能修改 CLASSPATH 環(huán)境變量以包括它們使用的類庫。這種設(shè)置可以保留。

可通過在調(diào)用 JVM 或其他 JDK 工具時使用 Java 工具的 -classpath 選項(xiàng)改變類路徑(例如: java -classpath ...)。這是改變類路徑的首選方法。還可通過使用 CLASSPATH 環(huán)境變量改變類路徑。

注意:JDK 1.2 缺省類路徑是當(dāng)前目錄。設(shè)置 CLASSPATH 變量或使用 -classpath 命令行開關(guān)將覆蓋缺省值,因而如果想要在搜索路徑中包括當(dāng)前目錄,則必須在新設(shè)置中包括“.”。
類可以存儲在目錄(文件夾)或歸檔文件(例如 classes.zip 或 classes.jar)中。有關(guān)歸檔文件的詳細(xì)信息和類路徑的工作原理,參見本文檔最后的理解類路徑和包名。

重要說明:JDK 舊版本在缺省類路徑中還包括 /classes 項(xiàng)。該目錄僅供 JDK 使用,且不用于應(yīng)用程序類。應(yīng)用程序類應(yīng)該放置在 JDK 外部的目錄。這樣,安裝新 JDK 時不必需要重新安裝應(yīng)用程序庫。為了與舊版本的兼容性,使用 /classes 目錄作為類庫的應(yīng)用程序在當(dāng)前版本中仍能運(yùn)行,但不能保證在以后的版本中它們還能運(yùn)行。
使用 Java 工具的 -classpath 選項(xiàng)
Java 工具 java、jdb、javac 和 javah 具有 -classpath 選項(xiàng),在工具運(yùn)行時它將取代缺省類路徑或由 CLASSPATH 環(huán)境變量所指定的類路徑。這是改變類路徑設(shè)置的推薦方法,因?yàn)檫@樣每個應(yīng)用程序可具有它所需的類路徑而又不會干擾其他應(yīng)用程序。
運(yùn)行時工具 java 和 jdb 還具有 -cp 選項(xiàng)。該選項(xiàng)是 -classpath 的縮寫。

對于非常特殊的情況,java 和 javac 都具有開關(guān),使得可改變它們使用的路徑以查找它們自己的類庫。但是,絕大多數(shù)用戶從來都不會用到這些開關(guān)。

使用 CLASSPATH 環(huán)境變量
如前一節(jié)中所述,一般用戶將想要使用 -classpath 命令行選項(xiàng)。本節(jié)將介紹如何設(shè)置 CLASSPATH 環(huán)境變量或清除以前安裝遺留下的設(shè)置。
設(shè)置 CLASSPATH
在 DOS 提示符下,可用 set 命令修改 CLASSPATH 環(huán)境變量。其格式為:
set CLASSPATH=path2;path3 ...
路徑應(yīng)該以指定驅(qū)動器的字母開頭,例如 C:...。這樣,在偶然切換到不同驅(qū)動器時仍可找到類(例如,如果路徑項(xiàng)以 ... 開頭,并且當(dāng)前位于驅(qū)動器 D: 上,則所需的類將在 D: 而不是 C: 驅(qū)動器上找)。
清除 CLASSPATH
如果 CLASSPATH 環(huán)境變量被設(shè)置成不正確的值,或啟動文件或腳本程序設(shè)置了不正確路徑,則可通過使用下列命令清除 CLASSPATH:
C:> set CLASSPATH=
該命令僅清除當(dāng)前會話的 CLASSPATH。要確保在以后的會話中具有正確的 CLASSPATH 設(shè)置,則應(yīng)該刪除或修改啟動設(shè)置。
更改啟動設(shè)置
如果在系統(tǒng)啟動時設(shè)置 CLASSPATH 變量,則查找它的位置取決于所使用的操作系統(tǒng):
操作系統(tǒng) 方法
Windows 98 和
Windows 95 檢查 autoexec.bat 文件中的 set 命令。
Windows NT 啟動“控制面板”,選擇“系統(tǒng)”,單擊“環(huán)境”選項(xiàng)卡,并在“用戶變量”部分中,檢查 CLASSPATH 變量。

理解類路徑和包名
Java 類被組織成包,而這些包被映射到文件系統(tǒng)中的目錄。但是與文件系統(tǒng)不同的是,無論何時指定包名,都應(yīng)指定完整包名 -- 永遠(yuǎn)不要僅指定它的一部分。例如,java.awt.Button 的包名總是應(yīng)指定為 java.awt。
例如,假定想要 Java 運(yùn)行環(huán)境在包 utility.myapp 中查找名為 Cool.class 的類。如果該目錄的路徑為 C:javaMyClassesutilitymyapp,則應(yīng)該將類路徑設(shè)置成包含 C:javaMyClasses。

要運(yùn)行該應(yīng)用程序,可使用下述 JVM 命令:

C:> java -classpath C:javaMyClasses utility.myapp.Cool
當(dāng)該應(yīng)用程序運(yùn)行時,JVM 使用類路徑設(shè)置查找在 utility.myapp 包中定義的任何其他類。
注意:應(yīng)在命令中指定完整包名。例如,設(shè)置類路徑包含 C:javaMyClassesutility 并使用命令 java myapp.Cool 是不可能的,因?yàn)檫@找不到該類。

(您可能想知道用什么定義類的包名。答案是:包名是類的一部分,并且不能修改,除非重新編譯該類。)

注意:包規(guī)范機(jī)制一個有趣的結(jié)果是,屬于相同包的多個文件實(shí)際上可存在于不同的目錄中。對于每個類,包名都是相同的,但是每個文件的路徑可從類路徑中的不同目錄開始。
文件夾和歸檔文件
當(dāng)類存儲在目錄(文件夾)中時,例如 c:javaMyClassesutilitymyapp,則類路徑項(xiàng)指向包含包名第一個元素的目錄(在這里為 C:javaMyClasses,因?yàn)榘?utility.myapp)。
但是當(dāng)類存儲在歸檔文件(.zip 或 .jar 文件)中時,類路徑項(xiàng)則是該 .zip 或 .jar 文件的路徑。例如,要使用位于 .jar 文件中的類庫,則命令應(yīng)該類似下述形式:

java -classpath C:javaMyClassesmyclasses.jar utility.myapp.Cool
多重指定
要在目錄 C:javaMyClasses 和 C:javaOtherClasses 中查找類文件,則可將類路徑設(shè)置為:
java -classpath C:javaMyClasses;C:javaOtherClasses ...
注意兩個路徑之間用分號分隔。
指定次序
指定多個類路徑項(xiàng)的次序是相當(dāng)重要的。Java 解釋器將按照目錄在類路徑變量中的次序在各個目錄中查找類。在上例中,Java 解釋器首先在目錄 C:javaMyClasses 中查找需要的類。只有當(dāng)它在該目錄中沒有找到該類時,解釋器才能到 C:javaOtherClasses 目錄中查找。
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI