#java-class #parser #reading

bin+lib classy

Classy: 一个用于解析Java类文件的Rust库

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

Download history 2/week @ 2024-03-08 2/week @ 2024-03-15 3/week @ 2024-03-29 1/week @ 2024-04-05

52 每月下载量

Apache-2.0

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