javap 是 JDK 內建的 Java 類別檔反組譯工具,能將編譯後的 .class 位元碼檔案反解析,顯示類別的結構資訊,包含欄位、方法、建構子等成員資訊,是除錯與分析第三方類別庫的利器。
javap [選項] 類別名稱 [其他類別...]
| 選項 | 功能說明 |
|---|---|
-h | 產生可用於 C 標頭檔的資訊(已過時,JNI 開發較少使用) |
-p / -private | 顯示所有類別與成員(包含 private、protected、package-private、public) |
-c | 對每個方法輸出反組譯後的位元碼指令(核心功能) |
-classpath <path> | 指定類別搜尋路徑 |
-v / -verbose | 輸出完整資訊:常數池、行號表、區域變數表、簽名等 |
-verify | 執行驗證器並顯示除錯資訊 |
-version | 顯示 javap 版本資訊 |
javap java.lang.String
輸出 String 類別的 public 成員。
javap -c -v -p com.example.MyClass
顯示所有成員(含 private)與完整位元碼指令,適合深度分析。
javap -cp target/classes -c com.myapp.Service
-v 時顯示,包含字面常數、類別/方法符號引用。-c 顯示 JVM 指令碼,如 aload_0、invokespecial、return 等。結合 javap -c 與 javac -parameters 編譯,可保留參數名稱,反組譯時更易閱讀。若需圖形化介面,可考慮 JClassLib、Bytecode Viewer 或 IDE 內建工具(IntelliJ IDEA: View → Show Bytecode)。