官术网_书友最值得收藏!

1.4 常見疑難解答

對于初學者而言,在Java程序的開發、編譯和執行過程中,都會或多或少遇到問題,如環境變量設置不正確,源程序的語法錯誤、語義錯誤,或在程序編譯、運行期發生錯誤等。如果這些錯誤或問題不能得到適當的處理,那么會對初學者造成很大的障礙。本節將介紹幾種常見的錯誤,以使讀者在學習過程中少走彎路。

1.4.1 環境變量設置錯誤

在編譯并運行Java應用程序之前,需要設置環境變量,其目的是使Windows系統可以知道DOS窗口中運行的Java工具可執行程序,如Javac源程序編譯工具等。圖1-12說明Windows操作系統無法發現Javac編譯程序。

圖1-12 無法找到Javac可執行程序

當然如果已經安裝了JDK,則可以在DOS提示符下輸入Javac的絕對路徑,通過絕對路徑來識別該命令的位置。顯然這種方式很煩瑣,因為每次編譯源文件都要輸入一串路徑和命令信息。讀者可以通過2.1節掌握如何設置JDK環境變量。

1.4.2 語法錯誤

Java語言規范設計了語法規則,但是如果疏漏了部分內容,違反了Java的語法規則,編譯器會發出語法錯誤消息,該消息包含錯誤類型、發生錯誤的代碼在程序中的位置(以該錯誤代碼行號為標識)等,并且在錯誤處標識一個“^”。出現語法錯誤的情況如圖1-13所示。

圖1-13 語法錯誤

在HelloWorld.java源程序中將語句System.out.println(“HelloWorld!”)后的分號去掉,使得程序語句缺少結束標志,這就違反了Java語法規則。在編譯期發生任何類型的錯誤都會導致無法生成.class文件。所以此時需要讀者仔細分析錯誤類型,細致檢查程序中的錯誤,直到源程序順利通過編譯。

1.4.3 語義錯誤

編譯器也會發現語義錯誤。編譯器無法識別一個標識的語義時就會產生語義錯誤,如發現一個未定義的變量、錯誤輸入了系統類庫的類名等。圖1-14演示了一個語義錯誤,筆者故意將語句System的首字母改為小寫,使編譯器無法識別,從而輸出語義錯誤。

圖1-14 語義錯誤

注意 Java程序區分大小寫。

1.4.4 運行時錯誤

運行時錯誤指在執行程序過程中發生的錯誤,如某個類沒有實例化而造成空指針、無法找到指定的類文件等。下面介紹三種初學者常見的運行時錯誤。

1.無法發現類文件

在用戶編譯或執行Java程序時,由于種種原因可能輸入了不正確的類名,使得編譯器或虛擬機無法發現該文件所在位置。類文件名輸入錯誤如圖1-15所示。

圖1-15 類文件名輸入錯誤

在圖1-15中,筆者想運行HelloWorld程序,但是輸入了錯誤的類名HelloWorldd,所以執行時系統拋出java.lang.ClassNotFoundException錯誤。

使用Java工具會啟動Java虛擬機,此時系統會首先在當前目錄下尋找類文件,如果沒有則默認到操作系統的系統環境變量ClassPath中搜索,所以讀者也可以在該變量中設置需要編譯的類文件所在的目錄。

注意 變量的設置方式可以參考2.1.2節“設定環境變量”。

2.類名輸入錯誤

對于初學者而言,很容易出現的一個錯誤是,執行Java程序時往往會輸入類文件名,如HelloWorld.class,這是不允許的,此時會拋出類名輸入錯誤異常,如圖1-16所示。

圖1-16 類名輸入錯誤

注意 在調用Java工具執行程序時,需要在其后輸入類名而不是類文件名,如輸入java HelloWorld才是正確的方式。

3.無法發現main()方法

在1.3節已經知道,任何Java應用程序執行的類中必須有main()方法,該方法是程序的入口,以后才可以繼續調用程序所需的各種其他資源。如果在類中沒有定義main()方法或該方法書寫錯誤,都會導致如圖1-17所示的缺少main()方法錯誤。

圖1-17 缺少main()方法錯誤

筆者在HelloWorld.java源程序中修改了main()方法的名字,繼續編譯并執行該程序,虛擬機將無法裝載該類,因為無法發現類HelloWorld的程序入口。

1.4.5 初學者如何選擇Java參考書

一個程序員如果沒有半米多高的技術書堆,就沒有人會認為他是真正的程序員。如何從眼花繚亂的開發叢書中找到適合自己的書,也是一門學問。

書評:比較成功的書籍在上市的前后,都會有名家撰寫的書評,這些書評包括對該書積極一面的評價,也有對書中內容的指摘,通過正反兩面的對照,相信可以幫助初學者做出購買的選擇。

道聽途說:口碑的重要性在現代社會中日益突出,如果真是一本好書,可能會在不同場合聽到不同的人對它給予相同的贊許,這就是該書的價值了。

不要忘記舊書攤:這不是在鼓勵懷舊,而事實是老書的質量和作者的寫書態度也許更嚴謹端正,這就是老書的好處。多次印刷的書也是值得考慮購買的對象,多版本說明作者對該書的精益求精和新技術的更新,同時也反映了該書在市場上的受歡迎程度。

預先閱覽:最好的當然是自己能夠預先瀏覽,從朋友那里借也好,在網上看看電子版也好,覺得自己喜歡,或是覺得有收藏的價值,再進行購買。

主站蜘蛛池模板: 军事| 皋兰县| 紫云| 玉环县| 永年县| 广西| 扎兰屯市| 广水市| 高青县| 隆安县| 库车县| 远安县| 松潘县| 利川市| 宁波市| 房产| 什邡市| 峨眉山市| 湖南省| 乳山市| 武平县| 搜索| 广宗县| 昭通市| 区。| 万全县| 辉县市| 黑河市| 井陉县| 克拉玛依市| 孝感市| 荆州市| 武山县| 景洪市| 宜兰县| 克山县| 舟曲县| 苏州市| 隆安县| 郸城县| 宁波市|