管理原始檔和類檔案
Java平臺的許多實現依賴於分層檔案系統來管理原始檔和類檔案,儘管Java語言規範不要求這樣做,策略如下。
將類、介面、列舉或註解型別的原始碼放在文字檔案中,該檔案的名稱是型別的簡單名稱,其副檔名為.java
,例如:
//in the Rectangle.java file
package graphics;
public class Rectangle {
...
}
然後,將原始檔放在一個目錄中,該目錄的名稱反映了該型別所屬的包的名稱:
.....graphicsRectangle.java
假定Microsoft Windows檔名分隔符反斜槓(對於UNIX,使用正斜槓),包成員的限定名稱和檔案的路徑名是並行的。
- 類名 — graphics.Rectangle
- 檔案的路徑名 — graphicsRectangle.java
你應該記得,按照慣例,公司使用其反向的網際網路域名作為其包名,Example公司的網際網路域名是example.com
,com.example
在它的所有包名之前,包名稱的每個元件對應一個子目錄,因此,如果Example公司有一個包含Rectangle.java
原始檔的com.example.graphics
包,它將包含在一系列子目錄中,如下所示:
....comexamplegraphicsRectangle.java
編譯原始檔時,編譯器會為其中定義的每種型別建立不同的輸出檔案,輸出檔案的基本名稱是型別的名稱,其副檔名為.class
,例如,如果原始檔是這樣的:
//in the Rectangle.java file
package com.example.graphics;
public class Rectangle {
. . .
}
class Helper{
. . .
}
然後編譯的檔案將位於:
<path to the parent directory of the output files>comexamplegraphicsRectangle.class
<path to the parent directory of the output files>comexamplegraphicsHelper.class
與.java
原始檔一樣,已編譯的.class
檔案應位於一系列反映包名稱的目錄中,但是,.class
檔案的路徑不必與.java
原始檔的路徑相同,你可以單獨排列源目錄和類目錄,如下所示:
<path_one>sourcescomexamplegraphicsRectangle.java
<path_two>classescomexamplegraphicsRectangle.class
通過這樣做,你可以將classes
目錄提供給其他程式設計師而不會洩露你的原始檔,你還需要以這種方式管理原始檔和類檔案,以便編譯器和Java虛擬機器(JVM)可以找到程式使用的所有型別。
classes
目錄的完整路徑<path_two>classes
,稱為類路徑,並使用CLASSPATH
系統變數進行設定,編譯器和JVM都通過將包名稱新增到類路徑來構造.class
檔案的路徑,例如,如果
<path_two>classes
是你的類路徑,包名是:
com.example.graphics
那麼編譯器和JVM查詢.class
檔案位於:
<path_two>classescomexamplegraphics.
類路徑可能包含多個路徑,用分號(Windows)或冒號(UNIX)分隔,預設情況下,編譯器和JVM搜尋當前目錄和包含Java平臺類的JAR檔案,以便這些目錄自動位於類路徑中。
設定CLASSPATH系統變數
要顯示當前的CLASSPATH
變數,請在Windows和UNIX(Bourne shell)中使用以下命令:
In Windows: C:> set CLASSPATH
In UNIX: % echo $CLASSPATH
要刪除CLASSPATH
變數的當前內容,請使用以下命令:
In Windows: C:> set CLASSPATH=
In UNIX: % unset CLASSPATH; export CLASSPATH
要設定CLASSPATH
變數,請使用以下命令(例如):
In Windows: C:> set CLASSPATH=C:usersgeorgejavaclasses
In UNIX: % CLASSPATH=/home/george/java/classes; export CLASSPATH