由於很多Java初學者都對classpath和path的概念模糊,我閱讀了眾多書籍,相關書籍有<<java編程基礎>>,<<java2技術內幕>>,<<Cisco Networking Academy Program Fundamentals of Java Programming>>希望對他們有幫助!!
到目前為止,我們在實驗室中創建的類都放在一個指定的目錄下.實驗指定了一個工作目錄,這個目錄叫做確省目錄.我們創建的源文件存儲在這個目錄下,生成的類文件也存儲在這個目錄下,你在這個確省的包中工作!
當一個源代碼文件編寫完後,我們通常叫他一個編譯單元,每個源代碼文件或編譯代碼的文件名都必須以.java文件名為後綴.在這個編譯單元中,只能有一個public 的類的定義,但可以有一個或多個的非public類定義.當你編譯源文件時,源文件的每個類都會產生一個相應的類文件(以class為後綴),java編譯器和解釋器負責查找,載入和解釋這些類文件.
要理解類定位的概念,你必須理解一些path 和classpath的相關重要的概念.所有的操作系統都利用變量來存儲目錄名,而這些目錄正是用戶試圖載入或啟動程序的時候需要查找的地方!在java運行環境中,有兩個變量會影響到類文件和和JDK程序的訪問,這就是path和classpath.
術語"路徑"用來表示程序查找一個文件的位置時所用到的一系列的指定的目錄!比如說,在windows系統中,java編譯器和java解釋器的程序文件分別為javax.exe和java.exe.這兩個文件通常存儲在你的jdk的bin目錄下,對於某些特定的平台,path變量是一個操作系統的變量,它所包含的路徑指向眾多的可執行文件所存在的目錄.計算機上面的操作系統通過這些路徑來查找需要運行的可執行文件.
比如說,要保證操作系統能找到javac.exe和java.exe,這兩個文件都在你的jdkin目錄下,就需要添加到path 變量中去.java編譯器和解釋器使得變量classpath 來定位類和包.classpath變量可以獲得很多條包含包的目錄路徑.jdk目錄結構包含一些被自動來查找類的子目錄,這些就是所謂的標准目錄,而且這些目錄就不需要定義在classpath變量中.你可以把類文件保存在這些目錄中的一個,例如,jdk1.3jreclasses就是一個能自動找到的標准目錄.其中 classes是我自己新建的目錄!你可以把自己的類文件放到這!
但我建議不這樣做,類文件應該通過程序員創建的目錄結構來治理.
由於創建的類大多數情況下總是存儲在相互分開的目錄中,classpath變量必須包含到達這些目錄的路徑.命令 CLASSPATH=djavacourselab在操作系統級別為classpath變量賦值.
載入類的時候,需要查找的額是確省目錄和顯示定義的包的目錄.他的執行順序為:
1,在標准目錄下查找文件;
2,在當前的工作目錄下查找所有的文件.在大多數的操作系統中,(.)符號表示當前的工作目錄.有些書中有介紹!
3,使用classpath變量定義的目錄路徑來查找文件,程序員必須在classpath變量中顯示的指定他們將要查找的目錄路徑.
4,在類的包聲明語句所聲明的包中查找文件,只在classpath變量所指定的目錄下查找這些包.
補充:
1,標准類有java.lang包,你部需要非凡的指定這個包的位置;
2,在當前目錄(確省目錄)下查找,注重是確省目錄,他會在確省目錄中查找所有文件的第一個!
3,顯示查找包的聲明,簡單的說就是我們在java語言中用import所引入的類或者說我們在classpath中用(.)所表示的當前的類.
4,對編譯器帶有-classpath選項的調用提供了一個指向確省目錄的類路徑!
同時也可以用-cp選項來聲明一個指定的classpath以供解釋器使用!!
例如:javac -classpath.huiwu917.java
java -cp.huiwu917
注重使用編譯器和-classpath選項以及-cp選項時,classpath變量可以被覆蓋掉!!