完成 JDK 相關環境設定之後,無論如何就先寫個簡單的 Java 程式,以測試一下環境設定是否正確,順便增強一些學習的信心,以下要介紹的第一個 Java 程式是會顯示 "嗨!我的第一個 Java 程式!" 這段訊息的簡單程式。
在正式撰寫程式之前,請先確定您可以看的到檔案的副檔名,在 Windows 2000/XP 下預設是不顯示檔案的副檔名,這會造成您重新命名檔案時的困擾,如果您目前在「檔案總管」下無法看到檔案的副檔名,請先執行工具列上的「工具/資料夾選項」並切換至「檢視」頁面,取消「隱藏已知檔案類型的副檔名」之選取。
圖 2.12 取消「隱藏已知檔案類型的副檔名」以顯示副檔名
接著選擇一個目錄來撰寫 Java 原始碼檔案,假設是檔案會儲存在 C:\workspace 目錄,您要新增一個「文字文件」(也就是 .txt 文件),並重新命名文件為「HelloJava.java」,由於您是將文字文件的副檔名從 .txt 改為 .java,所以系統會詢問您是否更改副檔名,請確定更改,接著在「HelloJava.java」上按兩下開啟檔案,並照著圖 2.13 撰寫程式。
圖 2.13 第一個 Java 程式
這個程式有幾點必須注意:
Java 的原始檔案必須以副檔名 .java 作結束
這也就是您必須讓「檔案總管」顯示副檔名的原因。
主檔名與類別名稱必須一致
Java 程式的類別名稱是指 "class" 關鍵字(Keyword)後的名稱,就這個例子而言,也就是 HelloJava 這個名稱,這個名稱必須與 HelloJava.java 的主檔名(HelloJava)一致。
注意每個字母的大小寫
Java 程式中會區分字母的大小寫,System 與 system 對 Java 程式來說是不一樣的名稱。
空白只能是半型空白字元或是Tab字元
有些初學者可能不小心輸入了全型空白字元,這很不容易檢查出來。
撰寫好程式並存檔後,接著開啟一個文字模式,並使用以下的指令切換至 HelloJava.java 所在的目錄(在此例中是 C:\workspace):
> cd C:\workspace
接著使用 javac 工具程式來編譯 .java 檔案,這邊指定編譯 HelloJava.java,指令如下:
C:\workspace\javac HelloJava.java
如果編譯順利成功,則在 HelloJava.java 所在的目錄,會出現一個 HelloJava.class 的檔案,這是已經編譯完成的 Java 位元碼(bytecodes)檔案程式。
您可能會遇到以下的幾個錯誤,這表示您有一些地方操作有誤:
error: cannot read: HelloJava.java
這表示 javac 工具程式找不到您指定的 .java 檔案,請檢查檔案是否存在目前的目錄中,或是檔案名稱是否有誤。
HelloJava.java:1: class HelloJava is public, should be declared in a file named HellJava.java
類別名稱與主檔名不符,請確定主檔名與類別名稱是相同的。
HelloJava.java:3: cannot find symbol
程式碼中某些部份打錯了,最常發生的原因可能是沒有注意到字母大小寫。
'javac' 不是內部或外部命令、可執行的程式或批次檔。
Path 設定有誤或沒有在 Path 中加入 JDK 的「bin」目錄,請參考前一節的內容。
在順利編譯出 .class 的檔案之後,可以使用 java 工具程式來執行它,執行時必須指定類別名稱,就以上的例子來說,也就是指定 HelloJava.class 這個檔案的主檔名,指令執行方式如下:
C:\workspace>java HelloJava
java 工具程式會根據您指定的類別名稱,實際載入 .class 的檔案,以上例來說,就是載入 HelloJava.class 並執行,執行的結果應該是圖 2.14 的畫面。
圖 2.14 執行第一個 Java 程式的成功畫面
您可能會遇到以下的幾個錯誤,這表示您有一些地方操作有誤:
Exception inthread"main" java.lang.NoClassDefFoundError
java 工具程式找不到您所指定的類別,請確定指定的類別存在目前的目錄中,名稱是否指定正確(如果是舊版的 JDK,可能必須在 Classpath 中加入 ".",表示可於目前目錄中找到所指定的類別)。
Exceptionin thread "main" java.lan.NosuchMethodError: main
沒有指定 Java 程式的進入點(Entry point),java 工具程式指定的類別必須要有一個程式進入點,也就是必須包括 main(String[] args)這個方法(method),請確定您的程式中包括它,必須與圖 2.13 的 HelloJava.java 內容一致。
在之後的章節,如果不是要特別強調的話,不再重複指出如何編譯與執行 Java 程式,在往後的章節中說要編譯 Java 程式時,就是指使用 javac 工具程式來編譯 .java,而說要執行 Java 程式時,就是指使用 java 工具程式來執行指定的 Java 類別。