天天看點

[置頂] JDK工具(一)–Java編譯器javac

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個工具