• Stars
    star
    1,111
  • Rank 41,794 (Top 0.9 %)
  • Language
    Java
  • License
    MIT License
  • Created over 10 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

GUI tool for investigating Java class files

Classpy

Classpy is a GUI tool for investigating Java class file, Lua binary chunk, Wasm binary code, and other binary file formats.

Inspiration

This tool is mainly inspired by javap and JavaClassViewer. I reinvent the wheel for the following two reasons:

1. Learn Java class file format and bytecode through parsing it
2. Try JavaFX 8

Features

  • Understands class files described by JVMS9
  • Supports Lua 5.3 binary chunk format
  • Supports Wasm binary format
  • Supports Bitcoin raw block and transaction format
  • Displays parsed binary file as tree and hex text
  • The corresponding hex text is highlighted when you select a tree node

Quick Start

Just for macos with brew

  • Install
brew tap guxingke/repo && brew install classpy
  • Try
    • open default gui window
    classpy
    • open gui window with args
    echo "public class HelloWorld { public static void main(String[] args) { System.out.println(\"Hello World\"); } }" > HelloWorld.java
    $JAVA_HOME/bin/javac HelloWorld.java
    
    classpy HelloWorld.class

Requirements

Java 15 (checkout branch java8 if you stuck on Java 8)

Build

cd path/to/classpy
./gradlew fatJar
# java -jar path/to/classpy/classpy-gui/build/libs/classpy-fat-jar-0.10.0.jar

Run

cd path/to/classpy
./gradlew run

Screenshots

Screenshot1 Screenshot2 Screenshot3 Screenshot4