1. 程式人生 > >java-關於java_home配置,classpath配置和javac,java命令,javac編譯器,和java虛擬機器之間的關係

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,沒找到或者找到多個就報錯。