Java™ 教程(管理源文件和類文件)

管理源文件和類文件

Java平臺的許多實現依賴於分層文件系統來管理源文件和類文件,儘管Java語言規範不要求這樣作,策略以下。java

將類、接口、枚舉或註解類型的源代碼放在文本文件中,該文件的名稱是類型的簡單名稱,其擴展名爲.java,例如:程序員

//in the Rectangle.java file 
package graphics;
public class Rectangle {
   ... 
}

而後,將源文件放在一個目錄中,該目錄的名稱反映了該類型所屬的包的名稱:shell

.....\graphics\Rectangle.java

假定Microsoft Windows文件名分隔符反斜槓(對於UNIX,使用正斜槓),包成員的限定名稱和文件的路徑名是並行的。segmentfault

  • 類名 — graphics.Rectangle
  • 文件的路徑名 — graphicsRectangle.java

你應該記得,按照慣例,公司使用其反向的互聯網域名做爲其包名,Example公司的互聯網域名是example.comcom.example在它的全部包名以前,包名稱的每一個組件對應一個子目錄,所以,若是Example公司有一個包含Rectangle.java源文件的com.example.graphics包,它將包含在一系列子目錄中,以下所示:code

....\com\example\graphics\Rectangle.java

編譯源文件時,編譯器會爲其中定義的每種類型建立不一樣的輸出文件,輸出文件的基本名稱是類型的名稱,其擴展名爲.class,例如,若是源文件是這樣的:接口

//in the Rectangle.java file
package com.example.graphics;
public class Rectangle {
      . . . 
}

class Helper{
      . . . 
}

而後編譯的文件將位於:get

<path to the parent directory of the output files>\com\example\graphics\Rectangle.class
<path to the parent directory of the output files>\com\example\graphics\Helper.class

.java源文件同樣,已編譯的.class文件應位於一系列反映包名稱的目錄中,可是,.class文件的路徑沒必要與.java源文件的路徑相同,你能夠單獨排列源目錄和類目錄,以下所示:編譯器

<path_one>\sources\com\example\graphics\Rectangle.java

<path_two>\classes\com\example\graphics\Rectangle.class

經過這樣作,你能夠將classes目錄提供給其餘程序員而不會泄露你的源文件,你還須要以這種方式管理源文件和類文件,以便編譯器和Java虛擬機(JVM)能夠找到程序使用的全部類型。虛擬機

classes目錄的完整路徑<path_two>\classes,稱爲類路徑,並使用CLASSPATH系統變量進行設置,編譯器和JVM都經過將包名稱添加到類路徑來構造.class文件的路徑,例如,若是域名

<path_two>\classes

是你的類路徑,包名是:

com.example.graphics

那麼編譯器和JVM查找.class文件位於:

<path_two>\classes\com\example\graphics.

類路徑可能包含多個路徑,用分號(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:\users\george\java\classes
In UNIX:      % CLASSPATH=/home/george/java/classes; export CLASSPATH

上一篇:使用包成員

下一篇:什麼是異常?

相關文章
相關標籤/搜索