web-dev-qa-db-fra.com

Est-il possible d'afficher le bytecode du fichier de classe?

Duplicate possible:
Existe-t-il un éditeur Java classfile/bytecode pour éditer les instructions?

Le code source Java est compilé en bytecode, qui est en réalité dans le fichier de classe. Est-il possible d'afficher le bytecode d'une classe compilée?

Si c'est possible, peut-il être édité?

Existe-t-il un plugin Eclipse pour cela?

93
Abhishek Jain

Oui. Vous pouvez utiliser la commande javap incluse dans le JDK pour afficher le code en octets d'une classe. Par exemple:

javap -c com.mypackage.MyClass

Plusieurs bibliothèques et outils vous aident à travailler avec Java, par exemple ASM et Jasmin .

137
Jesper

Le JDK est livré avec javap , un outil permettant de désassembler le code octet dans un fichier de classe. La modification au niveau du code d'octet est possible. Jetez un œil à BCEL , a Java conçue pour lire, manipuler et écrire des fichiers de classe.

Une liste d'outils et de bibliothèques pour éditer le code octet est disponible sur Java-net . Par exemple, JBE , a Java Editeur de code octet livré avec une interface graphique.

23
Andreas_D

Pour afficher les bytecodes

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

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

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

Il montre les codes octets (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 codes octets) à l'aide des méthodes d'infrastructure asm.

Mieux encore, il le fait tant 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 éditer

Utiliser le code:

  • ASM: Visiteurs basés, très, très vite.
  • BCEL: charge le bytecode en tant que description en mémoire du fichier de classe.
  • Javassit: le plus simple à utiliser, vous permet de faire une correspondance de motif et de remplacer une expression.

À la main: JBE

17
Daniel Sperry

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

En ce qui concerne les éditeurs, il en existe deux types: les bibliothèques de manipulation de code octet et les éditeurs avec des interfaces graphiques. Cette question a été posée à quelques reprises sur SO, vous pouvez vérifier les réponses et les liens fournis.

Veillez simplement à ce que l’édition du bytecode ne soit pas aussi simple que vous le pensez. Le JVMS impose de nombreuses restrictions quant à la manière dont les fichiers de classe doivent être, et il y a de grandes chances pour que l'un de vos edit en viole un.

Vérifiez ces autres questions:

Éditer un fichier .class directement, jouer avec les opcodes

Est-il possible d'afficher le bytecode du fichier de classe?

Programmation en Java

2
H-H

Essayez d'utiliser - dirtyJOE - Java) Global Editor est un éditeur et un visualiseur complexes pour les binaires compilés Java (fichiers .class).

0
Musznik