[Java] 借助GUI展示class文件的内容(v1.0版本)

背景

之前我花了不少时间写了一个 简易的 class 文件解析工具(它的部分功能还没有完成)。这个工具没有 GUI,考虑到现在 AI 编程非常方便,可以让 trae 帮忙完成 Swing 的部分,从而让这个工具支持 GUI。本文会展示这个工具(GUI 版本)的基本用法。

正文

下载源代码

直接下载

从 简易的 class 文件解析工具 页面可以将源代码下载下来。

通过执行 git 命令下载

您通过执行以下命令也可以下载源代码

bash 复制代码
git clone https://github.com/fanofxiaofeng/naive-class-file-parser.git

运行 GUI 版本

切换分支

下载完成后,通过执行以下命令,就可以将代码切换到 feature_gui 分支。

bash 复制代码
git checkout feature_gui

启动

在项目顶层执行如下命令,就可以运行 GUI 版本

bash 复制代码
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 文件解析工具

相关推荐
金銀銅鐵4 小时前
为什么枚举类中可以定义抽象方法
java·后端·ai编程
陈随易4 小时前
Vue 编译器换掉 source map,快了三四成
前端·后端·程序员
txxzjmzlh6 小时前
SpringBoot 统⼀功能处理
java·spring boot·后端
nice_lcj5207 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
IT_陈寒8 小时前
Redis大key删除为什么会导致服务卡顿?我的线上事故复盘
前端·人工智能·后端
系统集成-鹰翔8 小时前
ERP图片改名后仍命中识别缓存:缓存键、十分钟到期与调用计数
javascript·经验分享·后端
用户8356290780518 小时前
使用 Python 在 Excel 中添加和自定义迷你图
后端·python
码事漫谈9 小时前
给AI看一颗❤️,它就开始写递归了
后端
用户8356290780519 小时前
使用 Python 在 Excel 图表中添加趋势线与回归方程
后端·python
你三大爷9 小时前
Netty / Kafka / Redis 保序问题的源码对比与 NIO 框架主流解法
后端·架构