5个不稳定版本
0.3.0 | 2023年7月21日 |
---|---|
0.2.0 | 2023年6月3日 |
0.1.2 | 2023年5月18日 |
0.1.1 | 2023年5月18日 |
0.1.0 | 2023年5月18日 |
16 在 #java-class
52 每月下载量
63KB
674 行
包含 (JAR文件,23KB) testdata/test.jar
Classy: 一个用于解析Java类文件的Rust库
库
Classy是一个基于Java虚拟机规范、Java SE 17版的Rust库,用于读取Java类文件。
https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-4.html
示例用法
let f = File::open("MyClass.class")?;
let class: ClassFile = read_class(f)?;
println!("Class JVM version: {}.{}", class.major_version, class.minor_version);
println!("Class has {} fields and {} methods", class.field_info.len(), class.method_info.len());
ClassFile
结构体包含有关类文件的完整信息
pub struct ClassFile {
minor_version: u16,
major_version: u16,
constant_pool: Vec<Constant>,
access_flags: u16,
this_class: u16,
super_class: u16,
interfaces: Vec<u16>,
field_info: Vec<FieldInfo>,
method_info: Vec<MethodInfo>,
attributes: Vec<Attribute>,
}
命令行
包含一个命令行工具,提供了使用库的示例。
特性
- 使用正则表达式在包含JAR文件的目录中搜索类。
- 部分反编译JAR文件中的所有类(类似于
javap
功能)。请注意,这不是一个完整的反编译器。它只显示字段和方法签名,而不是实现代码。
路线图
我为了个人使用而构建了这个库,以帮助我完成一个特定任务。我不确定是否将进一步开发它。
依赖项
~11MB
~186K SLoC