113 votes

Est-il possible de visualiser le bytecode d'un fichier Class ?

Duplicata possible :
Existe-t-il un éditeur de fichiers de classe / bytecode java pour modifier les instructions ?

Le code source Java est compilé en bytecode, qui se trouve en fait dans le fichier de classe. Est-il possible de visualiser le bytecode d'une classe compilée ?

Si c'est possible, peut-on l'éditer ?

Existe-t-il un plugin eclipse pour cela ?

161voto

Jesper Points 65733

Oui, vous pouvez utiliser le javap qui est fournie avec le JDK pour voir le code d'octets d'une classe. Par exemple, cette commande permet de voir le code byte d'une classe :

javap -c com.mypackage.MyClass

Il existe plusieurs bibliothèques et outils qui vous aident à travailler avec le bytecode Java, par exemple ASM y Jasmin .

26voto

Andreas_D Points 64111

Le JDK est livré avec javap qui est un outil permettant de désassembler le code byte à l'intérieur d'un fichier de classe. Il est possible d'éditer le code au niveau de l'octet. Jetez un coup d'œil à BCEL une bibliothèque Java conçue pour lire, manipuler et écrire des fichiers de classe.

Une liste d'outils et de bibliothèques permettant d'éditer du code à octets est disponible sur le site suivant java-net . Par exemple JBE un éditeur de code Java Byte qui est même doté d'une interface graphique.

19voto

Daniel Sperry Points 357

Pour visualiser les bytecodes

Oubliez le javap ! Le meilleur plugin que j'ai jamais utilisé est le "ASM - Bytecode Outline plugin for Eclipse" (en anglais)

http://asm.ow2.org/eclipse/index.html

Il provient d'ASM (un cadre de manipulation de bytecode).

Il montre les bytecodes (que vous avez demandés), les éléments de la pile (style jvm), et comment générer le même résultat (pour produire les mêmes bytecodes) en utilisant les méthodes du framework asm.

Mieux encore, il le fait alors que vous avez sélectionné le code source. Vous n'avez pas besoin de trouver le fichier .class dans le répertoire bin pour inspecter son bytecode.

Pour les modifier

En utilisant le code :

  • ASM : Basé sur les visiteurs, très, très rapide.
  • BCEL : Charge le bytecode comme une description en mémoire du fichier de classe.
  • Javassit : le plus simple à utiliser, il permet de faire du filtrage et du remplacement d'expressions.

À la main : JBE

5voto

H-H Points 1136

D'après mon expérience, jclasslib est l'un des meilleurs visualiseurs de bytecode.

Quant aux éditeurs, il en existe deux types : les bibliothèques de manipulation de bytecode et les éditeurs avec interface graphique. Cette question a été posée plusieurs fois sur SO, vous pouvez consulter les réponses et les liens qui ont été fournis.

Attention, l'édition du bytecode n'est pas aussi simple que vous le pensez. Les JVMS impose de nombreuses restrictions sur la manière dont les fichiers de classe doivent être présentés, et il y a de fortes chances que l'un de vos éditeurs viole l'une d'entre elles.

Consultez ces autres questions :

Édition directe d'un fichier .class, en jouant avec les opcodes

Est-il possible de visualiser le bytecode d'un fichier Class ?

Programmation en bytecode Java

0voto

Musznik Points 28

Essayez de l'utiliser - dirtyJOE - Java Overall Editor est un éditeur complexe et un visualiseur pour les binaires java compilés (fichiers .class).

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