120 votes

Comment puis-je ouvrir des fichiers .class Java de manière lisible par l'homme?

J'essaie de comprendre ce que le fichier de classe d'un applet Java fait sous le capot. L'ouvrir avec Notepad ou Textpad montre juste un tas de gobbledy-gook.

Y a-t-il un moyen de le remettre dans un format quelque peu lisible afin que je puisse essayer de comprendre ce qu'il fait?

  • Environnement == Windows w / VS 2008 installé.

214voto

DarenW Points 7817

jd-gui est le meilleur décompilateur pour le moment. il peut gérer de nouvelles fonctionnalités en Java, par rapport au JAD qui devient poussiéreux.

80voto

Michael Myers Points 82361

Si cela ne vous dérange pas de lire le bytecode, javap devrait fonctionner correctement. Cela fait partie de l'installation standard du JDK.

 Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure
 

7voto

Drew Frezell Points 1030

Vous voulez un décompilateur java, vous pouvez utiliser l'outil de ligne de commande javap pour le faire. De plus, Java Decompiler HOW-TO explique comment décompiler un fichier de classe.

2voto

Rasmus Faber Points 24195

Utiliser Jad pour décompiler est probablement votre meilleure option. Si le code n'a pas été masqué, le résultat sera correct.

2voto

Emmanuel Dupuy Points 1039

cpuguru, si votre applet a été compilé avec javac 1.3 (ou moins), votre meilleure option est d'utiliser Jad.

Malheureusement, le dernier JDK pris en charge par JAD 1.5.8 (Apr 14, 2001) est le JDK 1.3.

Si votre applet a été compilé avec le plus récent compilateur, vous pouvez essayer de JD-GUI : ce decompiler est en cours de développement, néanmoins, il génère correcte des sources Java, la plupart du temps, pour les classes compilées avec le Jdk 1.4, 1.5 ou 1.6.

DarenW, merci pour votre message. JD-GUI n'est pas le meilleur decompiler encore ... mais j'y travaille :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X