Crates.io | classy |
lib.rs | classy |
version | 0.3.0 |
source | src |
created_at | 2023-05-18 13:40:55.018809 |
updated_at | 2023-07-21 22:00:20.813632 |
description | Classy: A Rust Library for Parsing Java Class Files |
homepage | https://github.com/andygrove/classy |
repository | https://github.com/andygrove/classy |
max_upload_size | |
id | 867957 |
size | 147,761 |
Classy is a Rust library for reading Java class files, based on The Java Virtual Machine Specification, Java SE 17 Edition.
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());
The ClassFile
struct contains complete information about a class file:
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>,
}
A command-line tool is included, which provides examples of using the library.
Features:
javap
functionality). Note that this is not a
full decompiler. It only shows field and method signatures, not implementation code.I built this for personal use to help me with a specific task. I am not sure if I will develop it further.