之前我花了不少时间写了一个 简易的 class 文件解析工具(它的部分功能还没有完成)。这个工具没有 GUI,考虑到现在 AI 编程非常方便,可以让 trae 帮忙完成 Swing 的部分,从而让这个工具支持 GUI。本文会展示这个工具(GUI 版本)的基本用法。
正文
下载源代码
直接下载
从 简易的 class 文件解析工具 页面可以将源代码下载下来。
通过执行 git 命令下载
您通过执行以下命令也可以下载源代码
git clone https://github.com/fanofxiaofeng/naive-class-file-parser.git
运行 GUI 版本
切换分支
下载完成后,通过执行以下命令,就可以将代码切换到 feature_gui 分支。
git checkout feature_gui
启动
在项目顶层执行如下命令,就可以运行 GUI 版本
mvn compile exec:java -Pgui
启动后的效果如下图所示
选择一个 class 文件后,就可以对其进行解析。
核心功能
概览(Overview)部分
Overview 部分的示例效果如下图所示 ⬇️
在 Overview 部分,可以看到以下内容
| 字段 | 我是否已经对其进行简单的验证 |
|---|---|
| `magic` | ✅ |
| `minor_version` | ✅ |
| `major_version` | ✅ |
| `access_flags` | ✅ |
| `this_class` | ✅ |
| `super_class` | ✅ |
| `interfaces` | ❌ |
| `constant_pool_count` | ❌ |
| `fields_count` | ❌ |
| `methods_count` | ❌ |
| `attributes_count` | ❌ |
常量池(Constant Pool)部分
在 Constant Pool 部分,可以常量池中的各项。如果双击某一行,可以看到这一项所引用的 slot(如有)。
常量池涉及很多种类型,目前我的验证情况列举如下 ⬇️
| Tag | 常量类型 | 我是否已经对其进行简单的验证 |
|---|---|---|
| 1 | `CONSTANT_Utf8` | ✅ |
| 3 | `CONSTANT_Integer` | ✅ |
| 4 | `CONSTANT_Float` | ✅ |
| 5 | `CONSTANT_Long` | ✅ |
| 6 | `CONSTANT_Double` | ✅ |
| 7 | `CONSTANT_Class` | ✅ |
| 8 | `CONSTANT_String` | ✅ |
| 9 | `CONSTANT_Fieldref` | ❌ |
| 10 | `CONSTANT_Methodref` | ❌ |
| 11 | `CONSTANT_InterfaceMethodref` | ❌ |
| 12 | `CONSTANT_NameAndType` | ❌ |
| 15 | `CONSTANT_MethodHandle` | ❌ |
| 16 | `CONSTANT_MethodType` | ❌ |
| 17 | `CONSTANT_Dynamic` | ❌ |
| 18 | `CONSTANT_InvokeDynamic` | ❌ |
| 19 | `CONSTANT_Module` | ❌ |
| 20 | `CONSTANT_Package` | ❌ |
字段表(Fields)部分
字段表的示例效果如下,其内容还有待完善
方法表(Methods)部分
方法表的示例效果如下,其内容还有待完善
属性表(Attributes)部分
属性表的示例效果如下,其内容还有待完善
为 class 文件解析工具补上 Swing 界面,降低查看字节码结构的门槛,适合 Java 学习者、字节码调试与教学演示;功能尚在完善,宜作辅助工具使用。