web-dev-qa-db-ja.com

クラスファイルのバイトコードを表示することは可能ですか?

可能性のある複製:
Java命令を編集するクラスファイル/バイトコードエディタはありますか?

Javaソースコードはバイトコードにコンパイルされますが、実際にはクラスファイルにあります。コンパイルされたクラスのバイトコードを表示することは可能ですか?

可能であれば、編集できますか?

そのためのEclipseプラグインはありますか?

93
Abhishek Jain

はい。 JDKに含まれているjavapコマンドを使用して、クラスのバイトコードを表示できます。例えば:

javap -c com.mypackage.MyClass

Javaバイトコード、たとえば [〜#〜] asm [〜#〜] および Jasminで作業するのに役立ついくつかのライブラリとツールがあります。

137
Jesper

JDKには、クラスファイル内のバイトコードを逆アセンブルするツールである javap が付属しています。バイトコードレベルでの編集が可能です。 [〜#〜] bcel [〜#〜] 、a Javaクラスファイルの読み取り、操作、書き込み用に設計されたライブラリをご覧ください。

バイトコードを編集するツールとライブラリのリストは、 Java-net にあります。たとえば、 [〜#〜] jbe [〜#〜] 、a Java GUIが付属しているバイトコードエディタです。

23
Andreas_D

バイトコードを表示するには

Javapを忘れてください!私が今まで使用した中で最高のプラグインは "ASM-EclipseのBytecode Outlineプラグイン" です

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

ASM(バイトコード操作フレームワーク)からです。

バイトコード(要求)、スタック要素(jvmスタイル)、およびasmフレームワークメソッドを使用して同じ結果を生成する方法(同じバイトコードを生成する方法)を示しています。

さらに良いのは、ソースコードを選択している間にそうするという事実です。バイトコードを調べるためにbinディレクトリで.classファイルを見つける必要はありません。

それらを編集するには

コードを使用する:

  • ASM:訪問者ベースで、非常に高速です。
  • BCEL:クラスファイルのメモリ内記述としてバイトコードをロードします。
  • Javassit:使用するのが最も簡単なもので、パターンマッチングと式置換を行うことができます。

手で:JBE

17
Daniel Sperry

私の経験では、 jclasslib は最高のバイトコードビューアーの1つです。

エディターに関しては、バイトコード操作ライブラリーとGUIを備えたエディターの2つのタイプがあります。この質問はSOで数回尋ねられました。答えと提供されたリンクを確認できます。

バイトコードの編集は、思ったほど簡単ではないことに注意してください。 [〜#〜] jvms [〜#〜] は、クラスファイルのあり方に多くの制限を課し、編集の1つがそれらの1つに違反する可能性が高くなります。

これらの他の質問を確認してください。

。classファイルを直接編集し、オペコードで遊んで

クラスファイルのバイトコードを表示することは可能ですか?

プログラミングJavaバイトコード

2
H-H

使用してみてください-dirtyJOE-Java Overall Editorは、コンパイルされたJavaバイナリ(.classファイル)の複雑なエディタおよびビューアです。

0
Musznik