日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

classpath詳解

 duduwolf 2005-10-12
設(shè)置類(lèi)路徑 
結(jié)構(gòu) 
可通過(guò)對(duì) JDK 工具使用 -classpath 選項(xiàng)(首選方法)或設(shè)置 CLASSPATH 環(huán)境變量來(lái)設(shè)置類(lèi)路徑。 

C:> jdkTool -classpath path1;path2... C:> set CLASSPATH=path1;path2... 

每個(gè) path 以文件名或目錄結(jié)尾,該文件名或目錄取決于將類(lèi)路徑設(shè)置成什么: 
對(duì)于包含 .class 文件的 .zip 或 .jar 文件,路徑以 .zip 或 .jar 文件名結(jié)尾。 
對(duì)于未命名包中的 .class 文件,路徑以包含 .class 文件的目錄結(jié)尾。 
對(duì)于已命名包中的 .class 文件,路徑以包含“root”包(完整包名中的第一個(gè)包)的目錄結(jié)尾。 
用分號(hào)來(lái)分隔多個(gè)項(xiàng)目。使用 set 命令時(shí),需要省略等號(hào)兩邊的空格(=)。其中 jdkTool 可以為 java、javac、javadoc,等等。有關(guān)詳細(xì)列表,參見(jiàn) JDK 開(kāi)發(fā)工具。 
說(shuō)明 
類(lèi)路徑告訴 Java 應(yīng)用程序去哪里查找第三方和自定義類(lèi) -- 即不是 Java 擴(kuò)展或 Java 平臺(tái)一部分的類(lèi)。在 JDK 1.2 中,JVM 和其他 JDK 工具通過(guò)依次搜索平臺(tái)庫(kù)、庫(kù)擴(kuò)展和類(lèi)路徑來(lái)查找類(lèi)(有關(guān)搜索策略的詳細(xì)信息,參見(jiàn)如何查找類(lèi))。 
多數(shù)應(yīng)用程序的類(lèi)庫(kù)都會(huì)充分利用擴(kuò)展機(jī)制。因此,只有想要加載某個(gè)類(lèi)庫(kù) (a) 未位于當(dāng)前目錄或其分枝包中 且 (b) 未位于擴(kuò)展機(jī)制所指定的位置時(shí),才需設(shè)置類(lèi)路徑。 

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

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

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

重要說(shuō)明:JDK 舊版本在缺省類(lèi)路徑中還包括 /classes 項(xiàng)。該目錄僅供 JDK 使用,且不用于應(yīng)用程序類(lèi)。應(yīng)用程序類(lèi)應(yīng)該放置在 JDK 外部的目錄。這樣,安裝新 JDK 時(shí)不必需要重新安裝應(yīng)用程序庫(kù)。為了與舊版本的兼容性,使用 /classes 目錄作為類(lèi)庫(kù)的應(yīng)用程序在當(dāng)前版本中仍能運(yùn)行,但不能保證在以后的版本中它們還能運(yùn)行。 

使用 Java 工具的 -classpath 選項(xiàng) 
Java 工具 java、jdb、javac 和 javah 具有 -classpath 選項(xiàng),在工具運(yùn)行時(shí)它將取代缺省類(lèi)路徑或由 CLASSPATH 環(huán)境變量所指定的類(lèi)路徑。這是改變類(lèi)路徑設(shè)置的推薦方法,因?yàn)檫@樣每個(gè)應(yīng)用程序可具有它所需的類(lèi)路徑而又不會(huì)干擾其他應(yīng)用程序。 
運(yùn)行時(shí)工具 java 和 jdb 還具有 -cp 選項(xiàng)。該選項(xiàng)是 -classpath 的縮寫(xiě)。 

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

使用 CLASSPATH 環(huán)境變量 
如前一節(jié)中所述,一般用戶將想要使用 -classpath 命令行選項(xiàng)。本節(jié)將介紹如何設(shè)置 CLASSPATH 環(huán)境變量或清除以前安裝遺留下的設(shè)置。 
設(shè)置 CLASSPATH 
在 DOS 提示符下,可用 set 命令修改 CLASSPATH 環(huán)境變量。其格式為: 

set CLASSPATH=path1;path2 ... 

路徑應(yīng)該以指定驅(qū)動(dòng)器的字母開(kāi)頭,例如 C:\...。這樣,在偶然切換到不同驅(qū)動(dòng)器時(shí)仍可找到類(lèi)(例如,如果路徑項(xiàng)以 \... 開(kāi)頭,并且當(dāng)前位于驅(qū)動(dòng)器 D: 上,則所需的類(lèi)將在 D: 而不是 C: 驅(qū)動(dòng)器上找)。 
清除 CLASSPATH 
如果 CLASSPATH 環(huán)境變量被設(shè)置成不正確的值,或啟動(dòng)文件或腳本程序設(shè)置了不正確路徑,則可通過(guò)使用下列命令清除 CLASSPATH: 

C:> set CLASSPATH= 

該命令僅清除當(dāng)前會(huì)話的 CLASSPATH。要確保在以后的會(huì)話中具有正確的 CLASSPATH 設(shè)置,則應(yīng)該刪除或修改啟動(dòng)設(shè)置。 
更改啟動(dòng)設(shè)置 
如果在系統(tǒng)啟動(dòng)時(shí)設(shè)置 CLASSPATH 變量,則查找它的位置取決于所使用的操作系統(tǒng): 
操作系統(tǒng) 方法 
Windows 98 和 Windows 95 檢查 autoexec.bat 文件中的 set 命令。 
Windows NT 啟動(dòng)“控制面板”,選擇“系統(tǒng)”,單擊“環(huán)境”選項(xiàng)卡,并在“用戶變量”部分中,檢查 CLASSPATH 變量。 

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

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


C:> java -classpath C:\java\MyClasses utility.myapp.Cool 

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

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

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


java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool 

多重指定 
要在目錄 C:\java\MyClasses 和 C:\java\OtherClasses 中查找類(lèi)文件,則可將類(lèi)路徑設(shè)置為: 

java -classpath C:\java\MyClasses;C:\java\OtherClasses ... 

注意兩個(gè)路徑之間用分號(hào)分隔。 
指定次序 
指定多個(gè)類(lèi)路徑項(xiàng)的次序是相當(dāng)重要的。Java 解釋器將按照目錄在類(lèi)路徑變量中的次序在各個(gè)目錄中查找類(lèi)。在上例中,Java 解釋器首先在目錄 C:\java\MyClasses 中查找需要的類(lèi)。只有當(dāng)它在該目錄中沒(méi)有找到該類(lèi)時(shí),解釋器才能到 C:\java\OtherClasses 目錄中查找。 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多