Ist es möglich, den Bytecode der classndatei anzuzeigen?

Mögliche Duplikate:
Gibt es einen Java Classfile / Bytecode-Editor, um statementen zu bearbeiten?

Java-Quellcode wird in Bytecode kompiliert, der sich tatsächlich in der classndatei befindet. Ist es möglich, Bytecode einer kompilierten class anzuzeigen?

Wenn es möglich ist, kann es bearbeitet werden?

Gibt es dafür ein Eclipse-Plugin?

Ja. Sie können den im JDK javap Befehl javap , um den Bytecode einer class javap . Beispielsweise:

javap -c com.mypackage.MyClass

Es gibt mehrere Bibliotheken und Werkzeuge, die Ihnen bei der Arbeit mit Java-Bytecode helfen, zum Beispiel ASM und Jasmin .

Das JDK kommt mit javap , einem Tool, um den Byte-Code in einer classndatei zu zerlegen. Die Bearbeitung auf Byte-Code-Ebene ist möglich. Sehen Sie sich BCEL an , eine Java-Bibliothek zum Lesen, Bearbeiten und Schreiben von classndateien.

Eine Liste von Werkzeugen und Bibliotheken zum Bearbeiten von Byte-Code finden Sie auf java-net . Zum Beispiel JBE , ein Java-Byte-Code-Editor, der sogar mit einer GUI ausgestattet ist.

Um die Bytecodes anzuzeigen

Vergessen Sie javap! Das beste Plugin, das ich je benutzt habe, ist das “ASM – Bytecode Outline Plugin für Eclipse”

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

Es ist von ASM (ein Bytecode Manipulation Framework).

Es zeigt die Bytecodes (nach denen Sie gefragt haben), Stapelelemente (jvm-Stil) und wie Sie das gleiche Ergebnis (um die gleichen Bytecodes zu erzeugen) mit den asm-Framework-Methoden erzeugen.

Noch besser ist die Tatsache, dass es so ist, während Sie den Quellcode ausgewählt haben. Sie müssen die .class-Datei im bin-Verzeichnis nicht finden, um ihren Bytecode zu überprüfen.

Um sie zu bearbeiten

Code verwenden:

  • ASM: Besucher basiert, sehr, sehr schnell.
  • BCEL: Lädt den Bytecode als In-Memory-Beschreibung der classndatei.
  • Javassit: Das einfachste zu verwendende Programm ermöglicht die Mustererkennung und Ausdrucksersetzung.

Von Hand: JBE

Nach meiner Erfahrung ist jclasslib einer der besten Viewer für Bytecode.

Bezüglich der Editoren gibt es zwei Arten: Bibliotheken zur Manipulation von Bytecode und Editoren mit GUIs. Diese Frage wurde nur wenige Male zu SO gestellt. Sie können die Antworten und die bereitgestellten Links überprüfen.

Seien Sie vorsichtig, dass das Bearbeiten von Bytecode nicht so einfach ist, wie Sie denken. Das JVMS legt viele Einschränkungen für die classn-Dateien fest, und es besteht eine große Chance, dass eine Ihrer Bearbeitungen gegen eine dieser Dateien verstößt.

Überprüfen Sie diese anderen Fragen:

Eine .class-Datei direkt bearbeiten und mit Opcodes herumspielen

Ist es möglich, den Bytecode der classndatei anzuzeigen?

Programmierung in Java-Bytecode

Versuchen Sie es mit – dirtyJOE – Java Overall Editor ist ein komplexer Editor und Viewer für kompilierte Java-Binärdateien (.class-Dateien).