Varför konvertera CLASS till JAVA?
En .class-fil lagrar kompilerad bytecode, inte källkod. Dekompilering är användbart när de ursprungliga .java-filerna har gått förlorade eller är otillgängliga, för granskning av tredjepartskod eller för att förstå vad en kompilerad klass gör. En decompiler återskapar en approximation av den ursprungliga Java-källkoden.
Hur man konverterar CLASS till JAVA
JD-GUI OPEN-SOURCE
Dra .class-filen till JD-GUI-fönstret så visas den återskapade källkoden omedelbart. Använd Arkiv > Spara alla källor för att exportera .java-filer.
CFR OPEN-SOURCE
Kör java -jar cfr.jar MyClass.class --outputdir ./out så visas den dekompilerade .java-filen i utdatamappen.
IntelliJ IDEA Community FREE
Öppna eller dra .class-filen till redigeraren; IntelliJ dekompilerar den automatiskt med den inbyggda Fernflower-motorn och visar källkoden.
Om dessa format
En CLASS-fil är kompilerad Java-bytecode - det resultat som javac producerar från en .java-källfil. För att köra den behöver du Java (ett JDK) installerat, använd sedan kommandot «java…
Öppna detaljer för .CLASS →En JAVA-fil är mänskligt läsbar källkod skriven i programmeringsspråket Java. Öppna den i valfri textredigerare eller en Java-IDE som IntelliJ IDEA eller VS Code. För att köra den,…
Öppna detaljer för .JAVA →Kvalitet & vad man bör tänka på
- Kommentarer i den ursprungliga källkoden tas bort av kompilatorn och kan inte återställas från bytecode.
- Ursprungliga lokala variabelnamn ersätts vanligtvis med genererade namn som
var1,var2om inte klassen kompilerades med felsökningsinfo (javac -g). - Obfuskerade klasser (behandlade med ProGuard eller R8) dekompileras till knappt läsbar kod - decompileraren fungerar, men utdatan återspeglar de obfuskerade namnen.
Vanliga frågor
Är dekompilerad Java-källkod omkompilerbar?
Hur vet jag vilken Java-version som kompilerade klassen?
.class-headern indikerar Java-utgåvan - till exempel 52 = Java 8, 61 = Java 17, 65 = Java 21.Vad händer om jag bara behöver inspektera bytecode, inte återställa Java-källkod?
javap -c -p MyClass (som medföljer JDK) demonterar bytecoden till mnemoteknik utan att någon separat nedladdning krävs.