java-關於java_home配置,classpath配置和javac,java命令,javac編譯器,和java虛擬機器之間的關係
在每個人學習java的第一步,都是安裝jdk ,jre,配置java_home,classpath,path。
為什麼要做這些?在閱讀java-core的時候,看到了原理,p141。
一
關於類的共享
為了使類能被多個程式共享,需要做到以下幾步:
1.把類放到同一個目錄中,且該目錄是package樹狀結構的root目錄;如將com.horstmann.corejava.Employee類新增在目錄home/user/classdir下,這個Employee.class類檔案就必須位於子目錄/home/user/classdir/com/horstmann/corejava中。
2.將jar檔案放在一個目錄中,例如home/user/archives
3.設定類路徑(classpath),類路徑是所有包含類檔案的路徑的集合。在windows中,類路徑使用;分隔。
二
基於一的理論,我們配置了classPath
比如,我的類路徑classpath的設定是
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
代表我的java程式中,共享以下jar檔案:dt.jar和tools.jar,以及.路徑中的所有類,其中“."句號代表當前目錄。
這裡沒有設定類目錄。
三
javac編譯器和java虛擬機器執行的路徑
javac編譯器總是在當前目錄中查詢檔案,但java虛擬機器僅在類路徑中有"."目錄的時候才檢視當前目錄。如果設定了類路徑卻忘了包含“.”目錄,則程式可以編譯,但不能執行。
四
java虛擬機器尋找類的方法
e.g
classpath配置為 c:/home/user/classdir;.;c:/home/user/archives/archive.jar,java虛擬機器要找com.horstmann.corejava.Employee類檔案。
步驟如下:
1.首先要檢視儲存在jre/lib和jre/lib/ext目錄下的歸檔檔案中所存放的系統類檔案;
2.如果沒找到,找c:/home/user/classdir/com/horstmann/corejava/Employee.class
3.如果沒找到,找當前目錄的/com/horstmann/corejava/Employee
4.如果沒找到,找c:/home/user/archives/archive.jar 中的com/horstmann/corejava/Employee.class
五
編譯器尋找類的方法
太長了,反正就是有用類,就找該類的import,沒找到或者找到多個就報錯。