Skip to content

Commit 6fe4a8c

Browse files
author
Justin Lin
committed
added 2.2
1 parent c949751 commit 6fe4a8c

File tree

5 files changed

+66
-1
lines changed

5 files changed

+66
-1
lines changed

docs/CH02.md

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,69 @@ server 與 client 選項的差別在於所使用的 VM 不同,執行 Java 程
122122
2.2 設定 Path 與 Classpath
123123
--------------------------
124124

125-
待續 ...
125+
對於習慣圖形化介面操作的初學者而言,在文字模式下執行程式是一件陌生的事,也因此不瞭解 Path 路徑設定的方法與作用,而 Java 執行的平台也有自己的一套路徑規則來找尋撰寫好的 Java 類別,也就是所謂的 Classpath 設定,這個小節中將告訴您如何進行這些相關的設定。
126+
127+
## 2.2.1 設定 Path ##
128+
129+
在安裝好 JDK 程式之後,在JDK安裝目錄(假設是 C:\Program Files\Java\jdk1.6.0)下的「bin」目錄,會提供一些開發 Java 程式中必備的工具程式,對於 Java 的初學者我所給的建議是從文字模式(在 Windows 2000/XP 下稱之為命令提示字元)下來操作這些工具程式,您可以在 Windows 2000/XP 的「開始」選單中選擇「執行」,鍵入「cmd」指令來開啟文字模式。
130+
131+
雖然您知道 JDK 的工具程式是位於「bin」目錄下,但您的作業系統並不知道如何找到這些工具程式,所以當您鍵入「javac」嘗試執行編譯程式時,文字模式下會告訴您找不到 javac 工具程式。
132+
133+
![出現這個訊息表示找不到指定的工具程式](../images/img02-08.png)
134+
135+
圖 2.8 出現這個訊息表示找不到指定的工具程式
136+
137+
您必須告訴作業系統,應該到哪些目錄下嘗試找到您所想使用的工具程式,有幾個方法可以進行這項設定,最方便的方法就是設定系統變數中的 Path 環境變數,在 Windows 2000/XP 下可以選擇桌面上的「我的電腦」並按滑鼠右鍵,選擇「內容」後初換至「進階」頁面,並按下方的「環境變數」按鈕,在「環境變數」對話方塊中編輯「Path」變數。
138+
139+
![選擇 Path 變數並按下「編輯」以進行路徑設定](../images/img02-09.png)
140+
141+
圖 2.9 選擇 Path 變數並按下「編輯」以進行路徑設定
142+
143+
在 Path 變數的「編輯系統變數」的對話方塊中,於「變數值」欄位的最前方輸入 JDK「bin」目錄的路徑(這邊假設是 C:\Program Files\Java\jdk1.6.0\bin),然後緊跟著一個分號,以作為路徑設定的區隔,接著按「確定」即可完成設定。
144+
145+
![在 Path 變數中加入 JDK 的 bin 目錄路徑](../images/img02-10.png)
146+
147+
圖 2.10 在 Path 變數中加入 JDK 的 bin 目錄路徑
148+
149+
之所以要將 JDK 的路徑設定放置在 Path 變數設定的最前方,是因為作業系統在搜尋 Path 路徑設定時,會從最前方開始讀取,如果在路徑下找到指定的程式,就會直接執行,當您的系統中安裝有兩個以上的 JDK 時,在 Path 路徑中設定的順序,將決定執行哪個 JDK 下的工具程式。
150+
151+
設定 Path 變數之後,您要重新開啟一個文字模式才能重新讀入 Path 變數內容,接著如果您執行 javac 程式,您應該可以看到圖 2.11 的畫面。
152+
153+
![設定 Path 變數成功的話,就可以找到指定的工具程式](../images/img02-11.png)
154+
155+
圖 2.11 設定 Path 變數成功的話,就可以找到指定的工具程式
156+
157+
您也可以在文字模式下執行以下的指令,以直接設定目前的環境變數包括 Path 變數(這個設定在下次重新開啟文字模式時就不再有效):
158+
159+
set Path= C:\Program Files\Java\jdk1.6.0\bin;%Path%
160+
161+
事實上,如果您沒有在 Path 變數設定 JDK 的 bin 路徑的話,也可以直接執行 java 工具程式,這是因為 Windows 下安裝 JRE 時,會將 java.exe 複製至「C:\Windows\System32\」路徑之下,而這個路徑在 Path 變數中是預設的路徑。
162+
163+
如果 Path 設定是尋找 JDK 安裝目錄下的「bin」目錄,則作業系統會找尋 JDK 安裝目錄下工具程式,因而當您執行 java 程式時,就會使用 JDK 所附的 JRE(即「C:\Program Files\Java\jdk1.6.0\jre」),而不是公用的 JRE(即 C:\Program Files\Java\jre1.6.0\)。
164+
165+
簡單的說,作業系統會嘗試在您指定的 Path 變數中尋找指定的工具程式,當您鍵入 javac 指令時,由於 Path 變數中有設定 JDK 的「bin」目錄之路徑,作業系統就可以根據這個訊息來找到 javac、java 等工具程式。
166+
167+
## 2.2.2 設定 Classpath ##
168+
169+
Java 執行環境本身就是一個平台,執行於這個平台上的程式是已編譯完成的 Java 程式(之後會介紹到 Java 程式編譯完成之後,會以 .class 檔案存在),如果將 Java 執行環境比喻為作業系統的話,如果設定 Path 變數是為了讓作業系統找到指定的工具程式(以 Windows 來說的話就是找到 .exe 檔案),則設定 Classpath 的目的就是為了讓Java執行環境找到指定的 Java 程式(也就是.class檔案)。
170+
171+
有幾個方法可以設定 Classpath,最簡單的方法是在系統變數中新增 Classpath 環境變數,在圖 2.9 中的「系統變數」按下「新增」鈕,在「變數名稱」欄位中輸入「Classpath」,在「變數值」欄位中輸入 Java 類別檔案的位置,例如可以輸入「.;C:\Program Files\Java\jdk1.6.0\ lib\tools.jar; C:\Program Files\Java\jre1.6.0\lib\rt.jar」(jar 檔是 zip 壓縮格式,當中就包括了 .class 檔案以及 jar 中的 Classpath 設定),每一筆資料中間必須以「;」作為分隔。
172+
173+
事實上 JDK 6 預設就會到現行工作目錄(上面的 '.' 設定),以及 JDK 的「lib」目錄(這邊假設是 C:\Program Files\Java\jdk1.6.0\lib)中尋找 Java 程式,所以如果您的 Java 程式是在這兩個目錄中,則不必設定 Classpath 變數也可以找的到,將來如果您的 Java 程式不是放置在這兩個目錄時,則可以如上設定 Classpath。
174+
175+
如果所使用的 JDK 工具程式具有 Classpath 指令選項,則可以在執行工具程式時一併指定 Classpath,例如:
176+
177+
javac -classpath classpath1;classpath2 …
178+
179+
其中 classpath1、classpath2 是您實際要指定的路徑;您也可以在文字模式下執行以下的指令,以直接設定目前的環境變數包括 Classpath 變數(這個設定在下次重新開啟文字模式時就不再有效):
180+
181+
set CLASSPATH=%CLASSPATH%;classpath1;classpath2...
182+
183+
總而言之,設定 Classpath 的目的,在於告訴 Java 執行環境,哪些目錄下可以找到您所要執行的 Java 程式。一個分辨 Path 與 Classpath 的方式就是:「對於 Windows 作業系統來說,Path 是讓作業系統可以找到 ".exe" 執行檔的存在,而對於 Java 執行環境來說,ClassPath 就是讓 JVM 可以找到 ".class" 執行檔的存在」。
184+
185+
> **良葛格的話匣子** 在 Design Patterns Elements of Reusable Object-Oriented Software 書中對「框架」作出的解釋是:框架就是一組互相合作的類別組成,它們為特定類型的軟體開發提供了一個可以重複使用的設計。
186+
187+
2.3 第一個 Java 程式
188+
--------------------
189+
190+
待續 ...

images/img02-08.png

35 KB
Loading

images/img02-09.png

80.4 KB
Loading

images/img02-10.png

19.2 KB
Loading

images/img02-11.png

110 KB
Loading

0 commit comments

Comments
 (0)