3 个版本 (破坏性更新)

0.3.0 2024 年 4 月 19 日
0.2.0 2024 年 3 月 1 日
0.1.0 2024 年 2 月 28 日

#1098 in 解析器实现

MIT 许可证

150KB
3.5K SLoC

rjvm

rjvm 是一个 Rust 库,它允许解析 JVM 类文件。此库支持 Java 至少到 Java SE 21。 该库的目的是解析和写入(未来)JVM 类文件,而不是创建 JVM

入门指南

要将 rjvm 集成到您的项目中,只需将其添加到您的 Cargo.toml 文件中的依赖项即可。

[dependencies]
rjvm = "0.1.0"

要解析类文件,请按照以下步骤操作

  • 将类文件读入字节数组
  • 从字节数组创建一个 BufferedReader
  • 初始化一个可变的 ConstantPool 以存储常量池条目
  • 使用 ClassFile::decode 方法解析 ClassFile。
let file = include_bytes!("../path/to/your/class/file.class");
let mut buffer = rjvm::decoder::BufferedReader::new(file);
let mut constant_pool = rjvm::types::constants::ConstantPool::new();
let class_file = rjvm::types::elements::ClassFile::decode(&mut buffer, &mut constant_pool);

示例

在此存储库的 examples 目录中可以找到一些如何使用 rjvm 的简单示例。

  • decoding.rs: 展示了解析类文件的示例。
  • instructions.rs: 展示了解析类文件并打印所有方法及其指令的示例。

路线图

  • 解析包含所有相关元素的字节码文件
  • 管理常量池
  • 读取 JAR 文件
  • 写入类文件

依赖项

~105KB