javac [options] [sourcefiles] [@files]
oldjavac [options] [sourcefiles] [@files]
參數順序任意。options 為命令行選項,sourcefiles 為一或多個源文件,@files 為包含源文件列表的文件(每行一個文件名)。
javac 讀取 Java 類與介面定義,編譯為字節碼 .class 文件。源文件必須以 .java 結尾,類文件以 .class 結尾,文件名需與類名一致(如 MyClass.java → MyClass.class)。內部類會產生 Outer$Inner.class 形式的文件。
源文件應置於反映套件結構的目錄下。例如源碼根目錄為 /workspace,則 com.mysoft.mypack.MyClass 應位於 /workspace/com/mysoft/mypack/MyClass.java。Windows 下同理(如 c:\workspace\com\mysoft\mypack\MyClass.java)。
預設情況下,.class 輸出至源文件同目錄;可用 -d 選項指定目標目錄。
@filename 引用。javac @sourcefiles 其中 sourcefiles 內容為:
MyClass1.java
MyClass2.java
MyClass3.java
編譯時需獲取所有被使用、繼承、實現的類/介面類型資訊(含繼承鏈上的祖先類)。搜尋順序:
-bootclasspath、-extdirs 覆蓋)。CLASSPATH 環境變數或 -classpath 選項指定。-sourcepath 則在該路徑找源文件;否則在用戶類路徑同時尋找 .class 與 .java。| 情況 | javac 行為 |
|---|---|
僅找到 .class | 直接使用該類文件 |
僅找到 .java | 編譯源文件,再使用生成的類文件 |
| 兩者皆存在 | 比較修改時間(或用 -Xdepend 深度依賴檢查),過期則重編譯,否則用現有 .class |
注意:javac 會靜默編譯命令行未指定但被依賴的文件;用 -verbose 可追蹤自動編譯過程。
-d <dir>:指定類文件輸出目錄-classpath <path> / -cp <path>:覆蓋 CLASSPATH-sourcepath <path>:指定源文件搜尋路徑-bootclasspath <path>:覆蓋 Bootstrap 類路徑-extdirs <dirs>:覆蓋 Extension 目錄-encoding <encoding>:指定源文件編碼-g / -g:none / -g:{lines,vars,source}:控制除錯資訊生成-nowarn:關閉警告-verbose:輸出詳細編譯日誌-Xdepend:啟用深度依賴檢查(較慢但可靠)-Xlint[:key]:啟用推薦警告非標準選項以 -X 開頭,屬於當前實現專用,未來版本可能變更。
-target <version>:生成指定版本字節碼(如 1.4、1.5)-source <version>:指定源碼語言版本-bootclasspath、-extdirs:配合交叉編譯使用,確保運行時環境一致@files 管理源文件列表,避免命令行過長。-d 輸出至獨立 build 目錄,便於打包部署。-Xlint -Xdepend,及時發現潛在問題。-source、-target、-bootclasspath,避免運行時 UnsupportedClassVersionError。