當前位置:編程學習大全網 - 編程語言 - 在DOS中編譯JAVA文件時提示JAVAC找不到Hello.java

在DOS中編譯JAVA文件時提示JAVAC找不到Hello.java

2.1.3 了解JDK

接著來了解壹下安裝的東西有哪些。這裏假設JDK與公用JRE各安裝至C:\Program Files\Java\jdk1.5.0_06\及C:\Program Files\Java\jre1.5.0_06\。

公用JRE主要是為開發好的Java程序提供執行的平臺。前面曾經說過,JDK本身也有自己的JRE,這個JRE位於JDK安裝目錄的jre目錄下。以前面的安裝為例,就是在C:\Program Files\Java\jdk1.5.0_06\jre中,JDK本身所附的JRE主要是開發Java程序時做測試之用。與公用JRE的主要差別在於JDK本身所附的JRE比公用JRE多了個server的VM(Virtual Machine)執行選項,如圖2-5和圖2-6所示。通過查看C:\Program Files\Java\jdk1.5.0_06\jre\bin與C:\Program Files\Java\jre1.5.0_06\bin就可以了解。

圖2-5 JDK的JRE有server選項 圖2-6 公用JRE沒有server選項

server與client選項的差別在於所使用的VM不同,執行Java程序時默認會使用client VM。若使用server VM,會花比較長的啟動時間及消耗較多的內存,為的是啟動Java程序後可以獲得較好的執行效能。初學者現階段不用在乎啟動server或client VM的差別,只要先知道有這兩種VM即可。

如圖2-7所示,繼續來看看JDK的安裝目錄下有哪些東西。

圖2-7 JDK安裝目錄的內容

bin目錄

提供的是JDK的工具程序,包括javac、java、javadoc、appletviewer等程序。

demo目錄

壹些使用Java編寫好的範例程序。

jre目錄

JDK自己附帶的JRE。

lib目錄

工具程序實際上會使用的Java工具類(例如,javac工具程序實際上會去使用tools.jar中的com/sun/tools/javac/Main類)。

src.zip

Java提供的API類的源代碼壓縮文件。如果將來需要查看API的某些功能是如何實現的,可以查看這個文件中的源代碼內容。

在大致了解JDK與JRE安裝目錄下的內容之後,這裏作個總結,您到底要記得哪些東西?答案是JDK安裝目錄下的bin目錄。因為當您編寫完Java程序之後,無論是編譯或執行程序,都會使用到bin目錄下所提供的工具程序。

2.2 設置Path與Classpath

對於習慣圖形化接口操作的初學者而言,在命令符模式下執行程序是壹件陌生的事,也因此不了解Path路徑設置的方法與作用,而Java執行的平臺也有自己的壹套路徑規則來尋找編寫好的Java類,也就是所謂的Classpath設置。本節將介紹如何進行這些相關的設置。

2.2.1 設置Path

在安裝好JDK程序之後,在JDK安裝目錄(假設是C:\Program Files\Java\jdk1.5.0_06)下的bin目錄中,會提供壹些開發Java程序時必備的工具程序。對於Java的初學者,建議從命令符模式(在Windows 2000/XP下稱之為命令提示符)下來操作這些工具程序。您可以在Windows 2000/XP的“開始”菜單中選擇“運行”,輸入“cmd”命令來打開命令符模式。

雖然您知道JDK的工具程序是位於bin目錄下,但您的操作系統並不知道如何找到這些工具程序。所以當您輸入javac嘗試執行編譯程序時,命令符模式下會告訴您找不到javac工具程序,如圖2-8所示。

圖2-8 出現這個信息表示找不到指定的工具程序

您必須告訴操作系統,應該到哪些目錄下嘗試找到您所想使用的工具程序。有幾個方法可以進行這項設置,最簡便的方法就是設置系統變量中的Path環境變量。在Windows 2000/XP下可以選擇桌面上的“我的電腦”並單擊鼠標右鍵,選擇“屬性”後切換至“高級”頁面,並單擊下方的“環境變量”按鈕,在“環境變量”對話框中編輯Path變量,如圖2-9所示。

圖2-9 選擇Path變量並單擊“編輯”按鈕以進行路徑設置

如圖2-10所示,在Path變量的“編輯系統變量”對話框中,在“變量值”文本框中先輸入壹個“;”,接著輸入JDK bin目錄的路徑(這裏假設是C:\Program Files\Java\jdk1.5.0_06\bin),然後單擊“確定”按鈕即可完成設置。

圖2-10 在Path變量中加入JDK的bin目錄路徑

設置Path變量之後,要重新打開壹個命令符模式才能重新讀入Path變量內容,接著如果執行javac程序,應該可以看到圖2-11所示的畫面。

圖2-11 若設置Path變量成功,就可以找到指定的工具程序

也可以在命令符模式下執行以下的命令,直接設置目前的環境變量,包括Path變量(這個設置在下次重新打開命令符模式時就不再有效):

set Path=%Path%;C:\Program Files\Java\jdk1.5.0_06\bin

由於以上介紹的Path設置都是尋找JDK安裝目錄下的bin目錄,所以操作系統會搜索JDK安裝目錄下的工具程序。這樣當執行java程序時,默認會使用JDK所附的JRE(即C:\Program Files\Java\jdk1.5.0_06\jre),而不是公用的JRE(即C:\Program Files\Java\jre1.5.0_06\)。

簡單地說,操作系統會嘗試在指定的Path變量中尋找指定的工具程序。當輸入javac命令時,由於Path變量中有設置JDK的bin目錄的路徑,操作系統就可以根據這個信息來找到javac工具程序。

2.2.2 設置Classpath

Java執行環境本身就是壹個平臺,執行於這個平臺上的程序是已編譯完成的Java程序(後面會介紹到Java程序編譯完成之後,會以.class文件存在)。如果將Java執行環境比喻為操作系統,如果設置Path變量是為了讓操作系統找到指定的工具程序(以Windows來說就是找到.exe文件),則設置Classpath的目的就是讓Java執行環境找到指定的Java程序(也就是.class文件)。

有幾個方法可以設置Classpath,最簡單的方法是在系統變量中新增Classpath環境變量。在圖2-9中的“系統變量”下單擊“新建”按鈕,在“變量名”文本框中輸入Classpath,在“變量值”文本框中輸入Java類文件的位置。例如可以輸入“.;C:\Program Files\Java\jdk1.5.0_06\lib\tools.jar; C:\Program Files\Java\jdk1.5.0_06\lib\rt.jar”(jar文件是zip壓縮格式,其中包括.class文件和jar中的Classpath設置),每壹路徑中間必須以;作為分隔。

事實上JDK 5.0默認就會到當前工作目錄(上面的.設置),以及JDK的lib目錄(這裏假設是C:\Program Files\Java\jdk1.5.0_06\lib)中尋找Java程序。所以如果Java程序是在這兩個目錄中,則不必設置Classpath變量也可以找得到,將來如果Java程序不是放置在這兩個目錄時,則可以按上述設置Classpath。

如果所使用的JDK工具程序具有Classpath命令選項,則可以在執行工具程序時壹並指定Classpath。例如:

javac -classpath classpath1;classpath3...

其中classpath1、classpath 2是實際要指定的路徑。也可以在命令符模式下執行以下的命令,直接設置目前的環境變量,包括Classpath變量(這個設置在下次重新打開命令符模式時就不再有效):

set CLASSPATH=%CLASSPATH%;classpath1;classpath3...

總而言之,設置Classpath的目的,在於告訴Java執行環境,在哪些目錄下可以找到您所要執行的Java程序。

良葛格的話匣子:

以上介紹的是幾個簡單的Path與Classpath設置方式,實際上還有壹些設置方式。本章最後列出了幾個介紹Path、Classpath設置的網絡資源鏈接,內容包括其他操作系統下的設置方式,您可以從中進壹步了解相關的設置。

2.3 第壹個Java程序

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

2.3.1 編寫和編譯Java程序

在正式編寫程序之前,先確定可以看得到的文件的擴展名。在Windows 2000/XP下默認是不顯示文件的擴展名的,這會造成重新命名文件時的困擾。如果目前在“資源管理器”下無法看到文件的擴展名,應先執行工具欄上的“工具”|“文件夾選項”並切換至“查看”頁面,取消“隱藏已知文件類型的擴展名”復選框,如圖2-12所示。

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

2.3.2 執行Java程序

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

C:\workspace>java HelloJava

java工具程序會根據您指定的類名稱,實際加載.class的文件,以上例來說,就是載入HelloJava.class並執行,執行的結果應該是圖2-14所示的畫面。

圖2-14 執行第壹個Java程序的成功畫面

您可能會遇到以下的幾個錯誤,這表示您有壹些地方操作有誤:

Exception in thread"main" java.lang.NoClassDefFoundError

java工具程序找不到您所指定的類,請確定指定的類存在目前的目錄中,名稱是否指定正確(如果是舊版的JDK,可能必須在Classpath中加入.,表示可於目前目錄中找到所指定的類)。

Exception in 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類。

  • 上一篇:有誰知道PE管全自動焊接機的熱熔參數的嗎?
  • 下一篇:Delphi的8個技巧
  • copyright 2024編程學習大全網