A desktop decompiler tool built with Java Swing + CFR/Procyon/Fernflower/Vineflower + ASM.
- Drag and drop a
JARorZIP - Browse package folders and
classfiles in a tree - Click a class to view decompiled source
- Choose the decompiler backend from
配置 > Decompiler - Edit decompiled source directly in the right panel
- Search decompiled text across all classes by string or method name
- Save edited source by fully qualified name into the working source tree
- Try to rebuild the edited class with the JDK compiler and write it back into the loaded archive workspace
- Right click inside the code editor to inspect bytecode for the method at the caret
- Edit and save bytecode text snapshots for the current method or whole class
- Export all decompiled sources into a folder and package them as a
sources.jar - Save the current modified archive back out as a new
jar
mvn packagejava -jar target/class-decompiler-gui-1.0.0-jar-with-dependencies.jarThe runnable desktop package is:
target/class-decompiler-gui-1.0.0-jar-with-dependencies.jar
- Drop a target
jarorzipinto the window. - Select a
classon the left. - Edit the decompiled code on the right.
- Click
Save Sourceto persist the edited source and attempt a class rebuild. - Enter a keyword in the search box to search all decompiled source text.
- Click a search result to jump to the matching class and line.
- Right click in the editor and choose a bytecode view action when needed.
- Click
Save Current Archiveto package the modified working archive as a new jar. - Click
Export Sourcesto export all source files and package a source jar.
- Decompiled source editing is stored in the archive working source tree.
- Bytecode editing currently saves editable bytecode text snapshots for the selected method or class.
- Class rebuilding uses the JDK built-in compiler when available.
- Fernflower is copied to
target/decompiler-libsduring packaging so it can run isolated from Vineflower on Java 8. - Vineflower is disabled automatically when the app runs on Java 8 because the bundled Vineflower version requires Java 11+.