- 大話Java:程序設計從入門到精通
- 孫衛琴編著
- 2041字
- 2019-07-26 15:29:51
1.4 編譯和運行Java程序
現在,悟空已經創建了 Monkey.java 源程序。接下來,悟空要把它編譯為Monkey.class類文件,然后再拜托Java虛擬機來運行這個Monkey類。如圖1-9所示,編譯Java源程序需要有專門的Java編譯器程序,運行Java程序需要有Java虛擬機程序。那么Java編譯器程序和Java虛擬機程序在哪里呢?答案是:在JDK里面。
圖1-9 編譯和運行Java程序
1.4.1 JDK簡介
Java開發工具包(Java Development Kit,JDK)由Oracle公司提供。它為Java程序提供了基本的開發和運行環境。JDK還可以稱為Java標準開發環境( Java Standard Edition,JavaSE)。JDK的官方下載地址為:http://www.oracle.com/technetwork/java/javase/downloads/index.htm。
為了便于讀者下載到與本書配套的 JDK 軟件,在本書的技術支持網站JavaThinker.net上也提供了該軟件的下載:http://www.javathinker.net/download.jsp。
JDK主要包括以下內容:
Java虛擬機程序:負責解析和運行Java程序。在各種操作系統平臺上都有相應的Java虛擬機程序。在Windows操作系統中,該程序對應的文件為:JDK的安裝根目錄\bin\java.exe。
Java編譯器程序:負責編譯Java源程序。在Windows操作系統中,該程序對應的文件為:JDK的安裝根目錄\bin\javac.exe。
JDK類庫:提供了編寫Java程序所需要的最基礎的Java類及各種實用類。java.lang、java.io、java.util、java.awt和javax.swing包中的類都位于JDK類庫中。關于Java包的概念參見第2章的2.5節(包聲明語句)。
假設JDK安裝到本地后的根目錄為C:\jdk,在C:\jdk\bin目錄下有java.exe和javac.exe兩文件,它們分別為Java虛擬機程序和Java編譯器程序。
為了便于在DOS命令行下直接運行Java虛擬機程序和Java編譯器程序,可以把C:\jdk\bin目錄添加到操作系統的Path系統環境變量中。在Windows操作系統中,選擇【控制面板】→【系統和安全】→【系統】→【高級系統設置】→【環境變量】命令。接下來就可以編輯Path系統環境變量了,如圖1-10所示。
圖1-10 在操作系統的Path系統變量中添加C:\jdk\bin目錄
1.4.2 本范例的目錄結構
本章范例位于chapter01目錄下,讀者可以把chapter01目錄復制到本地硬盤的C:\目錄下。為了便于管理Java源文件及Java類文件,悟空決定把所有的Java源文件放在src子目錄下,把編譯生成的所有的Java類文件放在classes目錄下,如圖1-11所示。
圖1-11 本范例的目錄結構
1.4.3 編譯Java源程序
JDK中的javac.exe為Java編譯器程序,可以在DOS控制臺中運行該Java編譯器程序。如圖1-12所示,在Windows操作系統中選擇【開始】→【運行】命令,然后輸入“cmd”命令,就會打開一個DOS控制臺。在DOS命令行中,在同一行輸入以下用于運行javac.exe程序的命令:
javac -sourcepath C:\chapter01\src
-d C:\chapter01\classes
C:\chapter01\src\Monkey.java
以上javac命令包含以下內容:
-sourcepath選項:用于設定Java源文件所在的目錄,此處為C:\chapter01\src目錄。-sourcepath選項的默認值為DOS命令行的當前目錄。
-d選項:用于指定編譯生成的Java類文件的存放目錄,此處為C:\chapter01\classes目錄。-d選項的默認值為DOS命令行的當前目錄。
待編譯的Java源文件:此處為C:\chapter01\src\Monkey.java文件。
以上javac命令將對C:\chapter01\src\ Monkey.java源文件進行編譯。先對該文件進行 Java 語法檢查,如果發現錯誤,就停止編譯,并返回錯誤信息。如果 Monkey.java源文件中無語法錯誤,就會生成Monkey.class文件,并把它存放在C:\chapter01\classes目錄下。
圖1-12 在Windows中用“cmd”命令打開DOS控制臺
如果DOS控制臺無法識別javac命令,那么說明事先沒有把C:\jdk\bin目錄添加到Path系統環境變量中。此時,必須在DOS命令行中顯式指定地javac命令所在的目錄:
C:\jdk\bin\javac -sourcepath C:\chapter01\src
-d C:\chapter01\classes C:\chapter01\src\Monkey.java
此外,也可以在DOS命令行設置當前的path環境變量,這個path環境變量只對當前打開的DOS控制臺有效。在DOS控制臺輸入以下命令即可:
set path=C:\jdk\bin;%path%
1.4.4 運行Java程序
本章1.2節已經講過,Java程序必須依靠Java虛擬機才能運行,而JDK中的java.exe程序就是Java虛擬機程序。在DOS命令行下,輸入以下用于運行java.exe程序的命令:
java –classpath C:\chapter01\classes Monkey
以上java命令包含以下內容:
-classpath選項:用來設置classpath,該選項的默認值為當前路徑。在運行Java程序時,很重要的一個環節是設置classpath,classpath代表Java類的根路徑,Java虛擬機會從classpath中尋找所需Java類的.class文件。在本例中,classpath選項的值為C:\chapter01\classes。
待運行的Java類:此處為Monkey類。
以上java命令將會啟動Java虛擬機,Java虛擬機會從C:\chapter01\classes目錄下找到Monkey.class類文件,然后運行Monkey類,執行它的如下main()方法:
public static void main(String[] args) {
//創建代表智多星的Monkey對象
Monkey m=new Monkey("智多星");
//智多星說話
m.speak();
}
悟空把智多星叫過來,指著如圖1-13所示的程序運行結果,對智多星說:“你看,計算機里的那個虛擬智多星在學你說話呢。”智多星對悟空佩服得五體投地,贊嘆道:“孫爺爺,沒想到這愣頭計算機也能輕而易舉地變出我的化身,這和爺爺您身上的猴毛有異曲同工之妙啊。”
圖1-13 運行Monkey類的打印結果
不過,調皮的智多星很快就意識到,計算機里的虛擬智多星看不見摸不著,要是有個模樣就更好玩了。在本書第22章的22.5節(創建動畫),悟空將運用GUI編程,創建一個有模有樣的虛擬智多星,來滿足智多星的心愿。
悟空覺得每次用java命令運行Monkey類時,都要通過-classpath選項設置classpath有點麻煩。因此他運用“set classpath”命令在當前DOS控制臺先設置了classpath,接下來在使用java命令時,就不用再設置classpath了:
C:\>set classpath=C:\chapter01\classes
C:\>java Monkey
以上“set classpath”命令只對當前DOS控制臺有效。如果重新打開DOS控制臺,還需重新執行該命令。
1.4.5 創建用于編譯和運行Java程序的批處理文件
每次編譯或運行Java程序時,都要在DOS命令行中輸入很長的javac或java命令,悟空覺得太麻煩,就編寫了一個適用于Windows操作系統的批處理文件build.bat,它的內容如下:
set currpath=.\
if "%OS%" == "Windows_NT" set currpath=%~dp0%
set src=%currpath%src
set dest=%currpath%classes
set classpath=%dest%
javac -sourcepath %src% -d %dest% %src%\Monkey.java
java -classpath %classpath% Monkey
以上build.bat批處理文件包含了javac命令和java命令。build.bat批處理文件位于chapter01根目錄下。只要運行這個批處理文件,就會編譯并運行Monkey類。本書后面章節的范例中都提供了build.bat批處理文件。如果要編譯特定目錄下的所有Java源文件,可以采用以下方式:
javac-sourcepath %src% -d %dest% %src%\*.java
- R語言數據分析從入門到精通
- Mobile Web Performance Optimization
- Programming ArcGIS 10.1 with Python Cookbook
- JS全書:JavaScript Web前端開發指南
- KnockoutJS Starter
- D3.js 4.x Data Visualization(Third Edition)
- Extreme C
- Citrix XenServer企業運維實戰
- ExtJS Web應用程序開發指南第2版
- Python Interviews
- SQL Server 入門很輕松(微課超值版)
- iOS Development with Xamarin Cookbook
- VMware vSphere Design Essentials
- Python程序設計現代方法
- Practical Linux Security Cookbook