Por que converter CLASS para JAVA?
Um arquivo .class armazena bytecode compilado, não código-fonte. A descompilação é útil quando os arquivos .java originais são perdidos ou estão indisponíveis, para auditar código de terceiros ou para entender o que uma classe compilada faz. Um descompilador faz engenharia reversa de uma aproximação do código-fonte Java original.
Como converter CLASS para JAVA
JD-GUI OPEN-SOURCE
Arraste o arquivo .class para a janela do JD-GUI e o código-fonte reconstruído aparecerá imediatamente. Use Arquivo > Salvar Todas as Fontes para exportar os arquivos .java.
CFR OPEN-SOURCE
Execute java -jar cfr.jar MyClass.class --outputdir ./out e o arquivo .java descompilado aparecerá na pasta de saída.
IntelliJ IDEA Community FREE
Abra ou arraste o arquivo .class para o editor; o IntelliJ descompila-o automaticamente usando o motor Fernflower integrado e exibe o código-fonte.
Sobre estes formatos
Um arquivo CLASS é um bytecode Java compilado - o resultado que o javac produz a partir de um arquivo fonte .java. Para executá-lo, você precisa do Java (um JDK) instalado e usar o comando…
Abrir detalhes de .CLASS →Um arquivo JAVA é um código-fonte legível por humanos escrito na linguagem de programação Java. Abra-o em qualquer editor de texto ou em uma IDE Java como IntelliJ IDEA ou VS Code. Para…
Abrir detalhes de .JAVA →Qualidade e o que observar
- Comentários no código-fonte original são removidos pelo compilador e não podem ser recuperados do bytecode.
- Nomes de variáveis locais originais são geralmente substituídos por nomes gerados como
var1,var2, a menos que a classe tenha sido compilada com informações de depuração (javac -g). - Classes ofuscadas (processadas com ProGuard ou R8) são descompiladas em código mal legível - o descompilador funciona, mas a saída reflete os nomes ofuscados.
Perguntas frequentes
O código-fonte Java descompilado é recompilável?
Como saber qual versão do Java compilou a classe?
.class indica a versão do Java - por exemplo, 52 = Java 8, 61 = Java 17, 65 = Java 21.E se eu precisar apenas inspecionar o bytecode, não recuperar o código-fonte Java?
javap -c -p MyClass (incluído no JDK) desmonta o bytecode em mnemônicos sem a necessidade de um download separado.