Java SE 6 技術手冊

2.3 第一個 Java 程式

完成 JDK 相關環境設定之後,無論如何就先寫個簡單的 Java 程式,以測試一下環境設定是否正確,順便增強一些學習的信心,以下要介紹的第一個 Java 程式是會顯示 "嗨!我的第一個 Java 程式!" 這段訊息的簡單程式。

2.3.1 撰寫、編譯 Java 程式

在正式撰寫程式之前,請先確定您可以看的到檔案的副檔名,在 Windows 2000/XP 下預設是不顯示檔案的副檔名,這會造成您重新命名檔案時的困擾,如果您目前在「檔案總管」下無法看到檔案的副檔名,請先執行工具列上的「工具/資料夾選項」並切換至「檢視」頁面,取消「隱藏已知檔案類型的副檔名」之選取。

取消「隱藏已知檔案類型的副檔名」以顯示副檔名

圖 2.12 取消「隱藏已知檔案類型的副檔名」以顯示副檔名

接著選擇一個目錄來撰寫 Java 原始碼檔案,假設是檔案會儲存在 C:\workspace 目錄,您要新增一個「文字文件」(也就是 .txt 文件),並重新命名文件為「HelloJava.java」,由於您是將文字文件的副檔名從 .txt 改為 .java,所以系統會詢問您是否更改副檔名,請確定更改,接著在「HelloJava.java」上按兩下開啟檔案,並照著圖 2.13 撰寫程式。

第一個 Java 程式

圖 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」目錄,請參考前一節的內容。

2.3.2 執行 Java 程式

在順利編譯出 .class 的檔案之後,可以使用 java 工具程式來執行它,執行時必須指定類別名稱,就以上的例子來說,也就是指定 HelloJava.class 這個檔案的主檔名,指令執行方式如下:

C:\workspace>java HelloJava

java 工具程式會根據您指定的類別名稱,實際載入 .class 的檔案,以上例來說,就是載入 HelloJava.class 並執行,執行的結果應該是圖 2.14 的畫面。

執行第一個 Java 程式的成功畫面

圖 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 類別。