天天看點

java 核心技術-12版 卷Ⅰ- 2.2 使用指令行工具

作者:邯鴿宗gwc

如果以前有過使用Microsoft Visual Studio 等開發環境程式設計的經驗,你可能會習慣于開發系統有一個内置的文本編輯器、用于編譯和啟動程式的菜單以及一個調試工具。JDK 完全沒有這些功能。所有工作都要在終端視窗中通過鍵入指令來完成。這看起來很麻煩,不過确實是一個基本技能。第一次安裝Java 時,希望在安裝開發環境之前先檢查Java的安裝是否正确。另外,通過執行這些基本株洲,可以更好地了解開發環境在背景的工作。

不過,掌握了編譯和運作Java程式的基本步驟以後,你可能就會希望使用專業的開發環境。下一節會介紹如何使用開發環境。

首先介紹比較難的方法:從指令行編譯并運作Java程式。

打開一個終端視窗。

進入corejava/v1ch02/Welcome目錄(corejava 是安裝本書示例源代碼的目錄,請參見2.1.3節的解釋)。

鍵入下面的指令:

javac Welcome.java

java Welcome

然後,将會在終端視窗看到輸出

Welcome to Core Java!

=====================

祝賀你!你已經編譯并運作了第一個Java程式。

那麼,剛才都發生了什麼?javac程式是Java的編譯器,它檔案Welcome.java 編譯成Welcome.class。java 程式啟動Java 虛拟機,虛拟機執行class檔案中的位元組碼。

Welcome程式非常簡單,它隻是向終端輸出了一條消息。你可能想檢視這個程式中的代碼,可以打開 Welcome.java 檔案檢視内容。

在使用內建開發環境的年代,許多程式員對于在終端視窗中運作程式已經很生疏了。常常會出現很多錯誤,最後得到令人沮喪的結果。

一定要注意以下幾點:

如果手動輸入源程式,一定要確定正确的大小寫。例如,類名為Welcome,而不是welcome或 WELCOME。

編譯器需要一個檔案名(Welcome.java),而運作程式時,隻需要指定類名(Welcome),不帶.class

如果看到諸如“Bad command or file name” 或“javac:command not found”之類的消息,就要檢查上一節是否成功(注意:win10 有時候會發生一些bug,導緻環境變量丢失,需要重新設定)。

如果javac 報告了一個錯誤,之處無法找到Welcome.java 就應該檢查目錄中是否存在這個檔案。

在linux下,檢查Welcome.java 是否大小寫錯誤(linux嚴格區分大小寫)

windows下,使用dir指令,而不是使用圖形的資源管理工具,windows可能隐藏字尾名。notepad在編輯儲存時可能會預設添加字尾.txt ,導緻檔案成了 Welcome.java.txt,需要将檔案改回Welcome.java

運作程式之後,如果收到關于java.lang.NoClassDefFoundError的錯誤消息,就應該仔細檢查出問題的類名。

如果收到關于welcome(w小寫)的錯誤消息,就應該重新執行指令:java Welcome。java嚴格區分大小寫。

如果收到有關Welcome/java 的錯誤消息,這說明你錯誤地鍵入了java Welcome.java,應該去掉 .java

如果鍵入java Welcome,而虛拟機沒有找到Welcome類,就應該檢查是否有人設定了系統的CLASSPTH環境變量(不推薦設定此變量,但某些程式可能會這麼做)。

提示:在http://docs.oracle.com/javase/tutorial/getStarted/cupojava/ 上有一個很好的教程,其中更詳細地介紹了初學者容易犯的一些錯誤。
           
注釋:如果隻有一個源檔案,可以不執行javac指令。這個特性是為了支援shell腳本(以“shebang”行#!/path/to/java 開頭的腳本),可能也用于簡單的學生程式。一旦程式變得更複雜,就需要javac指令了 
           
java 核心技術-12版 卷Ⅰ- 2.2 使用指令行工具

個人補充說明:

在jdk11之後(當然也包括jdk17),jdk 工具進一步提供了友善的操作,也就是隻需要使用 java Welcome.java 就可以直接執行此源檔案。

作為對比,可以看看原來的指令

javac Welcome.java

java Welcome

當然,上面的程式太簡單了,沒什麼意思。是以,接下來,再看一個圖形化的應用。這是一個圖像檔案檢視器,可以加載和顯示一個圖像。與前面一樣,從指令行編譯執行這個程式。

打開一個終端視窗

切換到目錄 corejava/v1ch02/ImageViewer

輸入下面的指令

javac ImageViewer

java ImageViewer

或者,同樣可以簡化指令 java ImageViewer.java

可以打開這個檔案,檢視一下源代碼,這個程式比之前的第一個demo 程式複雜多了。不過,相比類似功能的C/C++程式還是簡單了很多。這部分内容現在隻做了解,如果感興趣,後面會講到使用java開發gui界面程式。java目前很少用來開發圖形界面程式,開發起來效果不太好,開源方面也不行。如果是為了工作,不建議學這個,如果是用作學習,加深對Java的了解認知,可以學習一番。