Hvorfor konvertere CLASS til JAVA?
En .class-fil gemmer kompileret bytecode, ikke kildekode. Dekompilering er nyttig, når de originale .java-filer er gået tabt eller er utilgængelige, til revision af tredjepartskode eller for at forstå, hvad en kompileret klasse gør. En decompiler foretager reverse-engineering af en tilnærmelse af den originale Java-kildekode.
Sådan konverterer du CLASS til JAVA
JD-GUI OPEN-SOURCE
Træk .class-filen ind i JD-GUI-vinduet, og den rekonstruerede kildekode vises med det samme. Brug File > Save All Sources for at eksportere .java-filer.
CFR OPEN-SOURCE
Kør java -jar cfr.jar MyClass.class --outputdir ./out, og den dekompilerede .java-fil vises i output-mappen.
IntelliJ IDEA Community FREE
Åbn eller træk .class-filen ind i editoren; IntelliJ dekompilerer den automatisk ved hjælp af den indbyggede Fernflower-motor og viser kildekoden.
Om disse formater
En CLASS-fil er kompileret Java-bytecode - det output, som javac producerer fra en .java-kildefil. For at køre den skal du have Java (et JDK) installeret og derefter bruge kommandoen «java…
Åbn .CLASS detaljer →En JAVA-fil er menneskelæsbar kildekode skrevet i programmeringssproget Java. Åbn den i enhver teksteditor eller en Java IDE som IntelliJ IDEA eller VS Code. For at køre den skal du…
Åbn .JAVA detaljer →Kvalitet & hvad man skal være opmærksom på
- Kommentarer i den originale kildekode fjernes af compileren og kan ikke gendannes fra bytecode.
- Originale lokale variabelnavne erstattes normalt med genererede navne såsom
var1,var2, medmindre klassen blev kompileret med debug-info (javac -g). - Obfuskerede klasser (behandlet med ProGuard eller R8) dekompileres til næsten ulæselig kode - decompileren virker, men outputtet afspejler de obfuskerede navne.
Ofte stillede spørgsmål
Er dekompileret Java-kildekode gen-kompilerbar?
Hvordan ved jeg, hvilken Java-version der kompilerede klassen?
.class-headeren angiver Java-udgivelsen - for eksempel 52 = Java 8, 61 = Java 17, 65 = Java 21.Hvad hvis jeg kun har brug for at inspicere bytecode og ikke gendanne Java-kildekode?
javap -c -p MyClass (følger med JDK) skiller bytecoden ad til mnemonics uden behov for separat download.