當編寫一個java源代碼文件時,此文件通常被稱為編譯單元(有時也被稱為轉移單元)。每個編譯單元都必須有一個后綴名.java,而在編譯單元內則可以有一個public類,該類的名稱必須與文件名稱一致。每個編譯單元只能有一個public類,否則編譯器就不會接收。如果在該編譯單元之中還有額外的類,那么在包之外無法看見這些類,這是因為它們不是public類,而且它們主要用來為主public類提供支持。
java解釋器的運行過程:
- 找出環境變量CLASSPATH,CLASSPATH包含一個或多個目錄,用作查找.class文件的根目錄
- 從根目錄開始,解析器獲取包的名稱並將每個句點替換成反斜杠,以從CLASSPATH根中產生一個路徑名稱。以cn.example.simple為例,它會轉換成cn\example\simple
- 得到的路徑會與CLASSPATH中的各個不同的項相連接,解析器就在這些目錄中查找與你所要創建的類名稱相關的.class文件
例子:
使用包名:cn.example.simple,在該名稱空間下,新建兩個類:
package cn.example.simple; public class Vector{ public Vector(){ System.out.println("cn.example.simple.Vector"); } }
package cn.example.simple; public class List{ public List(){ System.out.println("cn.example.simple.List"); } }
將這兩個文件置於目錄:C:\DOC\JavaT中,設置CLASSPATH,如下:
CLASSPATH=.;C:\DOC\JavaT
一旦類路徑確立,測試文件就可以放在任何目錄下:
import cn.example.simple.*; public class LibTest{ public static void main(String[] args){ Vector v = new Vector(); List l = new List(); } }/*output: cn.example.simple.Vector cn.example.simple.List */
分析:
當編譯器碰到simple類庫的import語句時,就開始在CLASSPATH所指的目錄中查找,查找子目錄cn\example\simple,然后從已編譯的文件中找出名稱相符.class文件。
注意:
無論何時創建包,都已經在給定的包名稱的時候隱含地指定了目錄結構。這個包必須位於其名稱所指定的目錄之中,而該目錄必須是以CLASSPATH開始的目錄中可以查詢到。
編譯過的代碼通常放置與源代碼的不同目錄中,但是必須保證JVM使用CLASSPATH可以找到該路徑。