工欲善其事,必先利其器。Java 開發工具套件(JDK)是所有 Java 開發的基石。本文系統梳理 JDK 組件架構、原始碼編譯與執行流程、類別搜尋路徑機制,助您建立扎實的工程化認知。
JDK 內建豐富的標準類別庫:java.lang、java.io、java.util、java.net、java.awt/javax.swing(GUI)、java.sql(JDBC)等。JRE(Java Runtime Environment)包含 JVM 與精簡類別庫,是最終用戶運行 Java 程式的最小環境。
javac [選項] 原始檔.java...
| 選項 | 功能 | 範例 |
|---|---|---|
-d 目錄 | 指定 .class 輸出根目錄,自動建立套件目錄結構 | javac -d build src/com/demo/Main.java |
-cp / -classpath 路徑 | 覆蓋環境變數 CLASSPATH,指定編譯時搜尋類別路徑 | javac -cp lib/xxx.jar src/Main.java |
-sourcepath 路徑 | 指定原始碼搜尋路徑(預設為當前目錄) | javac -sourcepath src src/Main.java |
-g | 產生除錯資訊(行號、區域變數),預設開啟 | javac -g src/Main.java |
-O | 優化編譯(內聯 static/final/private 方法),可能增加類別檔大小 | javac -O src/Main.java |
-nowarn | 抑制警告訊息 | javac -nowarn src/Main.java |
-verbose | 顯示詳細編譯過程(載入類別、編譯檔案) | javac -verbose src/Main.java |
-encoding 編碼 | 指定原始檔字元編碼(如 UTF-8) | javac -encoding UTF-8 src/Main.java |
public class 必須獨立置於同名 .java 檔案中package com.demo; → com/demo/ClassName.class-d,.class 檔輸出至 .java 同目錄(不建議,專案應分離原始碼與編譯產出)# 環境變數設定(Windows)
set CLASSPATH=.;C:\libs\mylib.jar;D:\projects\common\classes
# 編譯時覆蓋
javac -classpath ".;lib\dependency.jar" src/Main.java
# 執行時覆蓋
java -cp ".;lib\dependency.jar;build" com.demo.Main
rt.jar,不可覆蓋)jre/lib/ext 目錄下 JAR,Java 9+ 已移除此機制)-cp 指定的路徑與 JAR). 必須顯式包含在 CLASSPATH 中才會搜尋); 分隔,Linux/macOS 用冒號 :javac_g 為非優化版編譯器,保留完整除錯資訊,配合 jdb 進行源碼級除錯。現代 IDE(IntelliJ IDEA、Eclipse、VS Code)已整合圖形化除錯器,命令列工具較少直接使用,但理解其原理有助於排查建構問題。
掌握 JDK 工具鏈、編譯參數、CLASSPATH 解析邏輯,是從「會寫代碼」邁向「工程化開發」的關鍵一步。建議配合 Maven/Gradle 等建構工具實戰練習,體驗標準化專案結構帶來的依賴管理便利。