Waarom CLASS naar JAVA converteren?
Een .class-bestand slaat gecompileerde bytecode op, geen broncode. Decompileren is nuttig wanneer de originele .java-bestanden verloren of onbeschikbaar zijn, voor het controleren van code van derden, of om te begrijpen wat een gecompileerde class doet. Een decompiler reverse-engineert een benadering van de originele Java-broncode.
Hoe CLASS naar JAVA te converteren
JD-GUI OPEN-SOURCE
Sleep het .class-bestand naar het JD-GUI-venster en de gereconstrueerde broncode verschijnt onmiddellijk. Gebruik File > Save All Sources om .java-bestanden te exporteren.
CFR OPEN-SOURCE
Voer java -jar cfr.jar MyClass.class --outputdir ./out uit en het gedecompileerde .java-bestand verschijnt in de uitvoermap.
IntelliJ IDEA Community FREE
Open of sleep het .class-bestand naar de editor; IntelliJ decompileert het automatisch met de ingebouwde Fernflower-engine en toont de broncode.
Over deze formaten
Een CLASS-bestand is gecompileerde Java-bytecode - de uitvoer die javac produceert van een .java-bronbestand. Om het uit te voeren heb je Java (een JDK) geïnstalleerd nodig, gebruik daarna…
Open .CLASS details →Een JAVA-bestand is menselijk leesbare broncode geschreven in de programmeertaal Java. Open het in elke teksteditor of een Java IDE zoals IntelliJ IDEA of VS Code. Om het uit te voeren,…
Open .JAVA details →Kwaliteit & waar op te letten
- Commentaren in de originele broncode worden door de compiler verwijderd en kunnen niet worden hersteld uit de bytecode.
- Originele lokale variabelenamen worden meestal vervangen door gegenereerde namen zoals
var1,var2, tenzij de class is gecompileerd met debug-informatie (javac -g). - Geobfusceerde classes (verwerkt met ProGuard of R8) decompileren naar nauwelijks leesbare code - de decompiler werkt wel, maar de uitvoer weerspiegelt de geobfusceerde namen.
Veelgestelde vragen
Is gedecompileerde Java-broncode opnieuw te compileren?
Hoe weet ik welke Java-versie de class heeft gecompileerd?
.class-header geeft de Java-release aan - bijvoorbeeld 52 = Java 8, 61 = Java 17, 65 = Java 21.Wat als ik alleen de bytecode wil inspecteren en geen Java-broncode hoef te herstellen?
javap -c -p MyClass (gebundeld met de JDK) disassembleert de bytecode naar mnemonics zonder dat een aparte download nodig is.