1
0
Fork 0
mirror of https://github.com/Vineflower/vineflower.git synced 2025-12-10 09:52:56 +00:00
Modern Java decompiler aiming to be as accurate as possible, with an emphasis on output quality. Fork of the Fernflower decompiler. https://vineflower.org
Find a file
2025-11-04 19:18:41 -05:00
.github Quick dependency refresh (#427) 2024-09-04 21:31:01 -07:00
buildSrc Adjust publishing for new Central endpoint (#490) 2025-11-02 00:32:01 -04:00
gradle/wrapper Adjust publishing for new Central endpoint (#490) 2025-11-02 00:32:01 -04:00
plugins Make attributes and savers more extensible, improve readme 2025-11-04 19:02:29 -05:00
src Make attributes and savers more extensible, improve readme 2025-11-04 19:02:29 -05:00
test/org/jetbrains/java/decompiler Implement type annotations 2025-11-02 00:48:01 -04:00
testData Fix writing array types with type annotations 2025-11-02 00:48:01 -04:00
testFixtures/org/jetbrains/java/decompiler Allow plugins to change decompiled file extensions (#420) 2024-08-23 10:43:20 -05:00
.editorconfig [java decompiler] updates Gradle project 2017-11-28 15:42:02 +01:00
.gitattributes Quick dependency refresh (#427) 2024-09-04 21:31:01 -07:00
.gitignore Add gitignore and improve support for Eclipse and VSCode 2023-10-16 22:45:15 +01:00
ARCHITECTURE.md Make attributes and savers more extensible, improve readme 2025-11-04 19:02:29 -05:00
build.gradle Add type annotations test, always run gradle tests 2025-11-02 00:48:01 -04:00
CONTRIBUTING.md Improve some tests and the contributing doc 2024-01-22 10:51:59 -05:00
gradle.properties Adjust publishing for new Central endpoint (#490) 2025-11-02 00:32:01 -04:00
gradlew Adjust publishing for new Central endpoint (#490) 2025-11-02 00:32:01 -04:00
gradlew.bat Adjust publishing for new Central endpoint (#490) 2025-11-02 00:32:01 -04:00
LICENSE.md Add contributing and architecture 2021-06-11 16:53:39 -04:00
README.md Make attributes and savers more extensible, improve readme 2025-11-04 19:02:29 -05:00
settings.gradle Adjust publishing for new Central endpoint (#490) 2025-11-02 00:32:01 -04:00

Vineflower

Vineflower is a modern general purpose Java & JVM language decompiler focused on providing the best quality, speed, and usability.

Vineflower's features include:

  • Java 21+ support, including records, sealed classes, switch expressions, pattern matching, and more
  • Clean code generation and output, with automatic output formatting
  • Multithreaded decompilation

Examples of Vineflower's output compared to other decompilers can be found on the website.

Use

Vineflower can be used from the console or as a library. To run Vineflower from the command line, download the latest release from the Releases tab. You can then run Vineflower with java -jar vineflower.jar <arguments> <source> <destination>. <arguments> is the list of commandline arguments that you want to pass to the decompiler. <source> can be a jar, zip, folder, or class file, and <destination> can be a folder, zip, jar, or omitted to print to the console.

To use Vineflower as a library, you can find distributions on maven central. Vineflower 1.9+ requires Java 11 or higher to run, and Vineflower 1.11+ requires Java 17 or higher to run. Vineflower can be addded as a dependency in gradle with:

dependencies {
    implementation 'org.vineflower:vineflower:<version>'
}

More instructions on how to interface with Vineflower can be found on the website.

For IDE use, the Vineflower Intellij IDEA plugin replaces Fernflower in IDEA with Vineflower.

Please report any issues to the Issues tab!

Building

Vineflower can be built simply with ./gradlew build.

Support

For support or questions, please join one of the listed social platforms.

Contributing

Contributions are always welcome! The website has detailed instructions on how to set up Vineflower development, as well as information on debugging. When submitting pull requests, please target the latest develop/1.xx.y branch.

Special Thanks

Vineflower is a fork of Jetbrains' Fernflower, MinecraftForge's ForgeFlower, FabricMC's fork of Fernflower, and a direct continuation of work on Quiltflower. Special thanks to:

  • Stiver, for creating Fernflower
  • JetBrains, for maintaining Fernflower
  • MinecraftForge Team, for maintaining ForgeFlower
  • FabricMC Team, for maintaining Fabric's fork of Fernflower
  • CFR, for its large suite of very useful tests