首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 反組譯工具 javap 完整指南:指令選項與實務應用

     編輯:Java 相關知識

javap 反組譯器介紹

javap 是 JDK 內建的 Java 類別檔反組譯工具,能將編譯後的 .class 位元碼檔案反解析,顯示類別的結構資訊,包含欄位、方法、建構子等成員資訊,是除錯與分析第三方類別庫的利器。

基本指令語法

javap [選項] 類別名稱 [其他類別...]

常用選項對照表

選項功能說明
-h產生可用於 C 標頭檔的資訊(已過時,JNI 開發較少使用)
-p / -private顯示所有類別與成員(包含 private、protected、package-private、public)
-c對每個方法輸出反組譯後的位元碼指令(核心功能)
-classpath <path>指定類別搜尋路徑
-v / -verbose輸出完整資訊:常數池、行號表、區域變數表、簽名等
-verify執行驗證器並顯示除錯資訊
-version顯示 javap 版本資訊

實務應用範例

1. 查看類別公有 API

javap java.lang.String

輸出 String 類別的 public 成員。

2. 完整反組譯含位元碼

javap -c -v -p com.example.MyClass

顯示所有成員(含 private)與完整位元碼指令,適合深度分析。

3. 指定 classpath 分析專案類別

javap -cp target/classes -c com.myapp.Service

輸出內容解讀重點

  • 常數池:-v 時顯示,包含字面常數、類別/方法符號引用。
  • 方法位元碼:-c 顯示 JVM 指令碼,如 aload_0、invokespecial、return 等。
  • LineNumberTable:原始碼行號對應位元碼位置,除錯關鍵。
  • LocalVariableTable:區域變數名稱、型別、作用範圍。

進階技巧

結合 javap -c 與 javac -parameters 編譯,可保留參數名稱,反組譯時更易閱讀。若需圖形化介面,可考慮 JClassLib、Bytecode Viewer 或 IDE 內建工具(IntelliJ IDEA: View → Show Bytecode)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved