程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> CLASSPATH詳解

CLASSPATH詳解

編輯:關於JAVA
 設置類路徑

結構

可通過對 JDK 工具使用 -classpath 選項(首選方法)或設置 CLASSPATH 環境變量來設置類路徑。

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

每個 path 以文件名或目錄結尾,該文件名或目錄取決於將類路徑設置成什麼:

對於包含 .class 文件的 .zip 或 .jar 文件,路徑以 .zip 或 .jar 文件名結尾。

對於未命名包中的 .class 文件,路徑以包含 .class 文件的目錄結尾。

對於已命名包中的 .class 文件,路徑以包含“root”包(完整包名中的第一個包)的目錄結尾。

用分號來分隔多個項目。使用 set 命令時,需要省略等號兩邊的空格(=)。其中 jdkTool 可以為 java、javac、Javadoc,等等。有關詳細列表,參見 JDK 開發工具。

說明

類路徑告訴 Java 應用程序去哪裡查找第三方和自定義類 -- 即不是 Java 擴展或 Java 平台一部分的類。在 JDK 1.2 中,JVM 和其他 JDK 工具通過依次搜索平台庫、庫擴展和類路徑來查找類(有關搜索策略的詳細信息,參見如何查找類)。

多數應用程序的類庫都會充分利用擴展機制。因此,只有想要加載某個類庫 (a) 未位於當前目錄或其分枝包中 且 (b) 未位於擴展機制所指定的位置時,才需設置類路徑。

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

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

注意:JDK 1.2 缺省類路徑是當前目錄。設置 CLASSPATH 變量或使用 -classpath 命令行開關將覆蓋缺省值,因而如果想要在搜索路徑中包括當前目錄,則必須在新設置中包括“.”。

類可以存儲在目錄(文件夾)或歸檔文件(例如 classes.zip 或 classes.jar)中。有關歸檔文件的詳細信息和類路徑的工作原理,參見本文檔最後的理解類路徑和包名。

重要說明:JDK 舊版本在缺省類路徑中還包括 /classes 項。該目錄僅供 JDK 使用,且不用於應用程序類。應用程序類應該放置在 JDK 外部的目錄。這樣,安裝新 JDK 時不必需要重新安裝應用程序庫。為了與舊版本的兼容性,使用 /classes 目錄作為類庫的應用程序在當前版本中仍能運行,但不能保證在以後的版本中它們還能運行。

使用 Java 工具的 -classpath 選項

Java 工具 java、jdb、javac 和 Javah 具有 -classpath 選項,在工具運行時它將取代缺省類路徑或由 CLASSPATH 環境變量所指定的類路徑。這是改變類路徑設置的推薦方法,因為這樣每個應用程序可具有它所需的類路徑而又不會干擾其他應用程序。

運行時工具 Java 和 jdb 還具有 -cp 選項。該選項是 -classpath 的縮寫。

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

使用 CLASSPATH 環境變量

如前一節中所述,一般用戶將想要使用 -classpath 命令行選項。本節將介紹如何設置 CLASSPATH 環境變量或清除以前安裝遺留下的設置。

設置 CLASSPATH

在 DOS 提示符下,可用 set 命令修改 CLASSPATH 環境變量。其格式為:

set CLASSPATH=path1;path2 ...

路徑應該以指定驅動器的字母開頭,例如 C:\...。這樣,在偶然切換到不同驅動器時仍可找到類(例如,如果路徑項以 \... 開頭,並且當前位於驅動器 D: 上,則所需的類將在 D: 而不是 C: 驅動器上找)。

清除 CLASSPATH

如果 CLASSPATH 環境變量被設置成不正確的值,或啟動文件或腳本程序設置了不正確路徑,則可通過使用下列命令清除 CLASSPATH:

C:> set CLASSPATH=

該命令僅清除當前會話的 CLASSPATH。要確保在以後的會話中具有正確的 CLASSPATH 設置,則應該刪除或修改啟動設置。

更改啟動設置

如果在系統啟動時設置 CLASSPATH 變量,則查找它的位置取決於所使用的操作系統:

操作系統 方法

windows 98 和 Windows 95 檢查 autoexec.bat 文件中的 set 命令。

Windows NT 啟動“控制面板”,選擇“系統”,單擊“環境”選項卡,並在“用戶變量”部分中,檢查 CLASSPATH 變量。

理解類路徑和包名

Java 類被組織成包,而這些包被映射到文件系統中的目錄。但是與文件系統不同的是,無論何時指定包名,都應指定完整包名 -- 永遠不要僅指定它的一部分。例如,java.awt.Button 的包名總是應指定為 Java.awt。

例如,假定想要 Java 運行環境在包 utility.myapp 中查找名為 Cool.class 的類。如果該目錄的路徑為 C:\java\MyClasses\utility\myapp,則應該將類路徑設置成包含 C:\Java\MyClasses。

要運行該應用程序,可使用下述 JVM 命令:

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

當該應用程序運行時,JVM 使用類路徑設置查找在 utility.myapp 包中定義的任何其他類。

注意:應在命令中指定完整包名。例如,設置類路徑包含 C:\java\MyClasses\utility 並使用命令 Java myapp.Cool 是不可能的,因為這找不到該類。

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

注意:包規范機制一個有趣的結果是,屬於相同包的多個文件實際上可存在於不同的目錄中。對於每個類,包名都是相同的,但是每個文件的路徑可從類路徑中的不同目錄開始。

文件夾和歸檔文件

當類存儲在目錄(文件夾)中時,例如 c:\java\MyClasses\utility\myapp,則類路徑項指向包含包名第一個元素的目錄(在這裡為 C:\Java\MyClasses,因為包名是 utility.myapp)。

但是當類存儲在歸檔文件(.zip 或 .jar 文件)中時,類路徑項則是該 .zip 或 .jar 文件的路徑。例如,要使用位於 .jar 文件中的類庫,則命令應該類似下述形式:

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

多重指定

要在目錄 C:\java\MyClasses 和 C:\Java\OtherClasses 中查找類文件,則可將類路徑設置為:

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

注意兩個路徑之間用分號分隔。

指定次序

指定多個類路徑項的次序是相當重要的。Java 解釋器將按照目錄在類路徑變量中的次序在各個目錄中查找類。在上例中,Java 解釋器首先在目錄 C:\java\MyClasses 中查找需要的類。只有當它在該目錄中沒有找到該類時,解釋器才能到 C:\Java\OtherClasses 目錄中查找。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved