1. 程式人生 > >Java環境變數的配置以及為什麼?

Java環境變數的配置以及為什麼?

首先我們先裝好JDK。(為測試,我先將我電腦上的path變數裡和java有關的內容,以及JAVA_HOME變數全部刪除。),此時沒有配置環境變數。然後再dos裡面,執行結果如下。如圖1

然後我們編寫了一個HelloWorld程式它的名字叫_01HelloWorld.java,他處在我電腦的E盤之中,我在dos命令下進入到這個程式所在的目錄下,執行javac命令,發現失敗,如圖2

在我電腦上和JAVA有關的東西都放在E盤裡,JDK也是。然後我再進入我電腦裡面JDK目錄下的bin資料夾裡,現在我們把這個HelloWorld程式原始碼,也放在這個jdk目錄下的bin資料夾裡。在此處,我嘗試用javac命令來編譯這個  HelloWorld程式(即此處的_01HelloWorld.java)。結果如圖3 。

我們發現成功了,而且在之前原始碼檔案_01HelloWorld.java上面多了一個檔案_01HelloWorld.class。然後我們在用java命令,執行這個.class檔案。 如圖4所示。

這裡有幾個注意點。

1 :就是圖上所說,如果我們的原始碼裡有包名,我們javac出來.class位元組碼檔案,然後在java 命令這個位元組碼檔案,就會報錯:找不到或者無法載入主類,我們的程式碼並沒有錯,只是java裡一個完整的類名,應該是包名加類名,我們在這裡直接 java命令 位元組碼檔案,其實虛擬機器是找不到這個類的。因為不是完整類名。所以為了方便,在執行javac和java命令之前。我們在原始碼裡面將第一行的包名去掉。 然後我們就想,為什麼在這個jdk的bin目錄下編譯執行就可以而別的目錄不能呢?原因就是這個bin目錄下其實放著編譯器和工具。看看資料夾裡的東西,你會發現javac.exe 和java.exe。 我們在dos所執行的javac和java 其實就是這2個檔案在起作用。 

2:  我們用javac.exe 即 javac 原始碼檔案,編譯原始碼時,要指明原始碼的名字,所以要寫上後面的.java副檔名。而 java.exe 即java  位元組碼檔案時候,是因為要解釋編譯好的位元組碼檔案,所以我們這裡只要直接寫上檔名就可以了,不要帶任何副檔名。比如說.class。 

說到這裡,我們成功的運行了我們的HelloWorld程式,可是這也未免太麻煩了,我們必須在dos得進入jdk目錄下的bin,再把原始碼檔案放到這裡,才可以一步步的慢慢執行。我們現在想在任意路徑下執行javac 和java這2個程式,怎麼辦呢?這就是我們要配置環境變數的目的,可以方便的直接開啟dos,javac和java執行 java程式碼,而不是必須得進入相關目錄下。

滑鼠右鍵 我的電腦 , 屬性,高階系統設定,高階,環境變數。我們會發現有2個框框,一個是使用者變數,一個是系統變數。這2個框框,無論在哪個地方配置環境變數都是可以的,一般來說,我們的電腦只有我們一個人用,所以可以在使用者變數,上面的框框裡面配置。要是一個電腦的使用者有多個,我們就可以在系統變數裡面配置,這樣,對所有使用者都有效。我個人建議放在下面。

環境變數我們配置2個,一個是JAVA_HOME,一個是Path。 

JAVA_HOME 我們需要建立這個變數,建立好後,它的值,是指向JDK目錄的路徑。

Path變數,我們的電腦都會有,如果是win7的話path變數是一起堆在一行的,我們直接在行末加上 分號,和前面的值區分開,然後再指向 JDK目錄下的bin目錄。win10的話另起一行新增就OK了。我配置完成我的如圖5 。請仔細看圖上的2個變數的值。

細心看,其實 path裡面我們配置的變數,是JAVA_HOME下的bin,所以我們path 變數也可以這麼寫:。

 ; %JAVA_HOME% \bin 和我們上圖直接指向 bin 是一樣的效果。 

配置完成,如何檢驗是否配置成功? 很簡單,我們按  Win + R ,或者開始選單,執行 ,在裡面輸入cmd,進入dos。首先輸入javac 會發現出來很多與JAVA相關的命令, 然後再輸入 java  -version  。如果出來jdk的版本號,證明就已經配置成功了。如圖6.

現在我們配置好了環境變數,就要檢查它的功能了。我們將之前的在E盤的_01HelloWorld.class檔案刪除 ,_01HelloWorld.java我們直接剪下到D盤目錄下。在這裡我們就不截圖了。然後我們現在在進入dos。切換目錄到D盤,執行javac 和java 命令 ,發現成功了。如圖。

我們的javac.exe和java.exe是在E盤的,如前面的圖,可是我們現在在D盤,也可以執行這些命令了,而且沒有報錯。這便是 我們配置環境變數的目的,在任意路徑下都能執行  javac 和 java 。

提示: 

        編譯 :即代表著我們用javac 命令,將 原始碼檔案,即XXX.java   編譯成  另一個jvm認識的檔案, XXX.class 。(這個叫位元組碼檔案。)

         執行: 即 我們的java 命令,  虛擬機器執行的是它所能認識的 XXX.class檔案,而不是原始碼!