Pourquoi convertir CLASS en JAVA ?
Un fichier .class stocke du bytecode compilé, pas du code source. La décompilation est utile lorsque les fichiers .java originaux sont perdus ou indisponibles, pour auditer du code tiers ou pour comprendre le fonctionnement d'une classe compilée. Un décompilateur effectue une rétro-ingénierie pour obtenir une approximation du code source Java original.
Comment convertir CLASS en JAVA
JD-GUI OPEN-SOURCE
Faites glisser le fichier .class dans la fenêtre de JD-GUI et le code source reconstruit apparaît immédiatement. Utilisez Fichier > Save All Sources pour exporter les fichiers .java.
CFR OPEN-SOURCE
Exécutez java -jar cfr.jar MyClass.class --outputdir ./out et le fichier .java décompilé apparaîtra dans le dossier de sortie.
IntelliJ IDEA Community FREE
Ouvrez ou faites glisser le fichier .class dans l'éditeur ; IntelliJ le décompile automatiquement à l'aide du moteur intégré Fernflower et affiche le code source.
À propos de ces formats
Un fichier CLASS est du bytecode Java compilé - le résultat produit par javac à partir d'un fichier source .java. Pour l'exécuter, vous devez avoir installé Java (un JDK), puis utiliser la…
Ouvrir les détails de .CLASS →Un fichier JAVA est un code source lisible par l'homme écrit dans le langage de programmation Java. Ouvrez-le dans n'importe quel éditeur de texte ou un IDE Java tel que IntelliJ IDEA ou VS…
Ouvrir les détails de .JAVA →Qualité et points de vigilance
- Les commentaires du code source original sont supprimés par le compilateur et ne peuvent pas être récupérés à partir du bytecode.
- Les noms originaux des variables locales sont généralement remplacés par des noms générés tels que
var1,var2, sauf si la classe a été compilée avec des informations de débogage (javac -g). - Les classes obfusquées (traitées avec ProGuard ou R8) se décompilent en un code difficilement lisible - le décompilateur fonctionne, mais le résultat reflète les noms obfusqués.
Foire aux questions
Le code source Java décompilé est-il recompilable ?
Comment savoir quelle version de Java a compilé la classe ?
.class indique la version de Java - par exemple, 52 = Java 8, 61 = Java 17, 65 = Java 21.Et si j'ai seulement besoin d'inspecter le bytecode sans récupérer le code source Java ?
javap -c -p MyClass (inclus avec le JDK) désassemble le bytecode en mnémoniques sans nécessiter de téléchargement séparé.