javac

出自Local Chinese Wikipedia
跳至導覽 跳至搜尋

javac
開發者太陽電腦 (母公司甲骨文公司
目前版本1.7.0_25(2013年7月18日 (2013-07-18)
原始碼庫
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
程式語言Java
引擎
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    作業系統跨平台
    類型編譯器
    許可協定GPL
    網站www.oracle.com/technetwork/java/javase/downloads/index.html

    javac是收錄於JDK中的Java語言編譯器。該工具可以將字尾名為.java的原始檔編譯為字尾名為.class的可以執行於Java虛擬機器位元組碼

    使用方法[編輯]

    開發者使用IDE編寫的源程式(副檔名為.java)必須遵從於「The Java Language Specification」,可手工編譯或IDE編譯。執行javac的實質便是命令列的呼叫:

    javac hello.java

    即可生成對應的.class檔案。這種檔案遵從「The Java Virtual Machine Specification」。

    需要注意的是,Java語言規範要求每個公共類所在的原始碼檔案的檔名與其類名相同,除非這個類是一個巢狀類,而class檔案所包含的類必須和class檔案的檔名相同,包括巢狀類。javac編譯之後的class檔名會被自動命名為其中所包含的類的名字。

    javac的命令列參數[編輯]

       javac [可按任意次序排列的options] [一个或多个要编译的sourcefiles] [一个或多个对源文件名进行列表的@files] 
    

    javac的具體說明文件見:[1]

    命令列 解釋
    @<filename> 範例
    -Akey[=value] 傳遞給annotation processors的選項
    --add-modules <module>(,<module>)* Root modules to resolve in addition to the initial modules, or all modules on the module path if <module> is ALL-MODULE-PATH.
    --boot-class-path <path>, -bootclasspath <path> 覆蓋自舉bootstrap class files的路徑
    --class-path <path>, -classpath <path>, -cp <path> 指出在哪裏搜尋class files。它將覆蓋CLASSPATH環境變量中的類路徑
    -d <directory> 指出產生的class files放在哪裏。如果產生的類是一個包的組成部分,則該class files放入對應於所在package的子目錄中。必要時建立目錄。若未指定 -d 選項,則 javac 將把class files放到與原始檔相同的目錄中。
    -deprecation 顯示每種不被java語言規範鼓勵使用或覆蓋的成員或類的說明。沒有給出 -deprecation 選項的話, javac將顯示這類原始檔的名稱:這些原始檔使用或覆蓋不鼓勵使用的成員或類。 -deprecation是-Xlint:deprecation的簡寫
    -encoding <encoding> 指出原始檔的字元編碼
    -endorseddirs <dirs> Override location of endorsed standards path
    -extdirs <dirs> 覆蓋installed extensions的位置
    -g 生成所有的除錯資訊,包括局部變量。預設情況下,只生成行號和原始檔資訊。
    -g:{lines,vars,source} 生成某些除錯資訊,如原始檔除錯資訊、行號除錯資訊、局部變量除錯資訊
    -g:none 不生成任何除錯資訊
    -h <directory> 指出在哪裏放置生成的native header files
    --help, -help 列印幫助資訊
    --help-extra, -X 列印對額外選項的幫助資訊
    -implicit:{none,class} 指出是否對implicitly referenced files生成class files。預設值是class
    -J<flag> 把<flag>直接傳給runtime system
    --limit-modules <module>(,<module>)* 限制可看到的modules的範圍
    --module <module-name>, -m <module-name> 只編譯指定的module,檢查時間戳
    --module-path <path>, -p <path> 指出在哪裏搜尋modules
    --module-source-path <module-source-path> 指出對多個人modules在哪裏搜尋原始檔
    --module-version <version> 指出將被編譯的module的版本
    -nowarn 不產生警告資訊
    -parameters 生成元數據用於reflection方法參數。建構函式與方法的形參名被儲存在生成的class file中,從而Reflection API的 java.lang.reflect.Executable.getParameters方法可以取得它們
    -proc:{none,only} 控制annotation processing 與/或編譯被執行。none表示只編譯無annotation processing;only只annotation processing無隨後的編譯
    -processor <class1>[,<class2>,<class3>...] 將要執行的annotation processing的名字;跳過預設的發現過程
    --processor-module-path <path> 指出一個module路徑可以發現annotation processor
    --processor-path <path>, -processorpath <path> 指出在哪裏可以發現annotation processors
    -profile <profile> 在指定的profile中被用的API是可利用的
    --release <release> 針對特定版本虛擬機器編譯。支援的目標版本: 10, 6, 7, 8, 9
    -s <directory> 指出在哪裏存放被生成的source files
    -source <release> 指出原始碼遵從哪個版本的Java語言標準。必須大於5
    --source-path <path>, -sourcepath <path> 指定用來尋找類或介面定義的原始碼路徑。與用戶class path一樣,源路徑項用分號 (;) 進行分隔,它們可以是目錄、JAR 歸檔檔案或 ZIP 歸檔檔案。如果使用包,那麼目錄或歸檔檔案中的本地路徑名必須反映包名。注意:通過類路徑尋找的類,如果找到了其原始檔,則可能會自動被重新編譯。
    none 覆蓋系統module的位置
    -target <release> 生成將在指定版本的虛擬機器上執行的類檔案
    --upgrade-module-path <path> 覆蓋upgradeable modules的位置
    -verbose 輸出編譯器正在做的事情。包括了每個所載入的類和每個所編譯的原始檔的有關資訊
    --version, -version 版本資訊
    -Werror 如果警告出現則停止編譯

    參見[編輯]

    參考文獻[編輯]

    1. Java Platform, Standard Edition Tools Reference:javac. [2018-07-13]. (原始內容存檔於2018-05-15). 

    外部連結[編輯]