¿Por qué convertir CLASS a JAVA?
Un archivo .class almacena bytecode compilado, no código fuente. La descompilación es útil cuando los archivos .java originales se pierden o no están disponibles, para auditar código de terceros o para entender qué hace una clase compilada. Un descompilador realiza ingeniería inversa para obtener una aproximación del código fuente Java original.
Cómo convertir CLASS a JAVA
JD-GUI OPEN-SOURCE
Arrastre el archivo .class a la ventana de JD-GUI y el código fuente reconstruido aparecerá inmediatamente. Use Archivo > Guardar todas las fuentes para exportar los archivos .java.
CFR OPEN-SOURCE
Ejecute java -jar cfr.jar MyClass.class --outputdir ./out y el archivo .java descompilado aparecerá en la carpeta de salida.
IntelliJ IDEA Community FREE
Abra o arrastre el archivo .class al editor; IntelliJ lo descompila automáticamente utilizando el motor Fernflower integrado y muestra el código fuente.
Acerca de estos formatos
Un archivo CLASS es bytecode de Java compilado: el resultado que produce javac a partir de un archivo fuente .java. Para ejecutarlo necesitas tener instalado Java (un JDK), y luego usar el…
Abrir detalles de .CLASS →Un archivo JAVA es código fuente legible por humanos escrito en el lenguaje de programación Java. Ábralo en cualquier editor de texto o en un IDE de Java como IntelliJ IDEA o VS Code. Para…
Abrir detalles de .JAVA →Calidad y qué observar
- Los comentarios en el código fuente original son eliminados por el compilador y no pueden recuperarse del bytecode.
- Los nombres originales de las variables locales suelen reemplazarse por nombres generados como
var1,var2, a menos que la clase se haya compilado con información de depuración (javac -g). - Las clases ofuscadas (procesadas con ProGuard o R8) se descompilan en un código apenas legible - el descompilador funciona, pero el resultado refleja los nombres ofuscados.
Preguntas frecuentes
¿Es recompilable el código fuente Java descompilado?
¿Cómo sé qué versión de Java compiló la clase?
.class indica la versión de Java - por ejemplo, 52 = Java 8, 61 = Java 17, 65 = Java 21.¿Qué pasa si solo necesito inspeccionar el bytecode, no recuperar el código fuente Java?
javap -c -p MyClass (incluido con el JDK) desensambla el bytecode a mnemónicos sin necesidad de una descarga adicional.