1.概述
javac.exe: Java編譯器,将Java源代碼轉換成位元組碼。
2.用法
javac <選項> <源檔案>
(使用過程中發現,javac <源檔案><選項> 也可以)
其中,可能的選項包括:
-g 生成所有調試資訊
-g:none 不生成任何調試資訊
-g:{lines,vars,source} 隻生成某些調試資訊
-nowarn 不生成任何警告
-verbose 輸出有關編譯器正在執行的操作的消息
-deprecation 輸出使用已過時的 API 的源位置
-classpath <路徑> 指定查找使用者類檔案和注釋處理程式的位置
-cp <路徑> 指定查找使用者類檔案和注釋處理程式的位置
-sourcepath <路徑> 指定查找輸入源檔案的位置
-bootclasspath <路徑> 覆寫引導類檔案的位置
-extdirs <目錄> 覆寫安裝的擴充目錄的位置
-endorseddirs <目錄> 覆寫簽名的标準路徑的位置
-proc:{none,only} 控制是否執行注釋處理和/或編譯。
-processor <class1>[, , ...]要運作的注釋處理程式的名稱;繞過預設的搜尋程序
-processorpath <路徑> 指定查找注釋處理程式的位置
-d <目錄> 指定存放生成的類檔案的位置
-s <目錄> 指定存放生成的源檔案的位置
-implicit:{none,class} 指定是否為隐式引用檔案生成類檔案
-encoding <編碼> 指定源檔案使用的字元編碼
-source <版本> 提供與指定版本的源相容性
-target <版本> 生成特定 VM 版本的類檔案
-version 版本資訊
-help 輸出标準選項的提要
-Akey[=value] 傳遞給注釋處理程式的選項
-X 輸出非标準選項的提要
-J<标志> 直接将 <标志> 傳遞給運作時系統
3.用法舉例
3.1舉例說明:
3.1.1源檔案内容
3.1.2 位置
位于C槽JavaBinToolsDemo目錄
3.1.3 切換目錄
cd C:\JavaBinToolsDemo
提示:在dos和linux終端,按tab鍵會有提示,比如輸入javac Java再按tab鍵,如果隻有一個以Java開頭的檔案,會自動補全。
3.1.4編碼
在win7下使用記事本建立,編碼為ASCI。
3.2 七個例子
3.2.1 直接編譯JavaTest.java
javac JavaTest.java
如果沒有文法錯誤,會在JavaBinToolsDemo下生成JavaTest.class檔案。
3.2.2 列印版本号
javac -version JavaTest.java
或者 javac JavaTest.java -version
控制台輸出‘javac’和 目前版本号,比如javac 1.6.0_29
3.2.3 輸出有關編譯器正在執行的操作的消息
javac -verbose JavaTest.java
3.2.4 輸出使用已過時的 API 的源位置
javac -deprecation JavaTest.java
3.2.5 指定源檔案使用的字元編碼
将JavaTest.java使用記事本另存為UTF-8格式。
javac -encoding UTF-8 JavaTest.java
一般用UE或記事本編輯過的UTF-8的檔案頭會加入BOM辨別,該辨別由3個char組成。在UTF-8的标準裡該BOM辨別是可有可無的,Sun 的javac 在編譯帶有BOM的UTF-8的格式的檔案時會出現“非法字元:\65279”的錯誤,但是用Eclipse進行編譯卻沒有問題,原因在于Eclipse使用的是自己的JDT,而非javac,關于JDT的描述可以到eclipse的官網上去檢視。
使用EditPlus軟體修改為UTF-8(EditPlus另存為UTF-8指的是沒有加入BOM辨別)編碼後,再次執行。
javac -encoding UTF-8 JavaTest.java
3.2.6 禁用警告資訊
javac -nowarn JavaTest.java
執行結果卻仍然有警告,具體原因不詳,有待探究。
javac JavaTest.java編譯以下代碼,沒有産生任何警告。
3.2.7 編譯多個檔案
在JavaTest.java所在目錄下,建立JavaTest2.java
javac -encoding UTF-8 *.java
值得探讨的問題是,現在的警告資訊仍然隻有一次。
猜測:如果使用已經過時的API,警告資訊會自動出現,-nowarn選項沒有用。
相關閱讀
JDK工具(零)--簡要介紹JDK1.6自帶的42個工具