2013-05-27 9 views
15

私はJavaでバイトコードの操作/生成を行っています。バイトコードをチェックする簡単な方法があるかどうかは疑問でした。私はファイルを逆コンパイルしたくないので、コンパイルされたバイトコードを実際に見たいと思います。私はそれを編集する必要はありません。これを行うためのリンクやプログラムは、受け入れられる回答になります。Javaクラスファイルのバイトコードを表示することは可能ですか

+0

通常、IDE内から直接行うことができます。たぶんプラグインの助けを借りて。 – maba

+2

私は 'javap'はあなたが探しているものだと思います。 JDKに付属のコマンド。 –

+0

javap -c classfile – Satya

答えて

2

私はdecompilerの色分けされたバイトコード出力モード(javapよりもはるかに読みやすい)で作業しています。また、Javaコードまたは中間のバイトコードASTを出力することもできます。

2

The javap command-line toolは、OracleのJDKにバンドルされています。定数ファイルとすべての関数のバイトコードの内容とともに.classファイルの詳細なダンプを提供します。フルダンプを取得するには-vで実行してください。

+0

しかし、コンパイラがファイルを読み込んで自分の合成クラスを作成できるようにするために、コンパイラが読み込んでいるものを見たいと思っています。 – Popgalop

+0

@Popgalopコンパイラは、実際のバイトコードを読み込みますが、これはテキスト形式ではありません。私はあなたがそれを16進エディタで開き、[this reference](http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html)を使って自分で解析することができたと思いますしかし、人間が読めるダンプが必要な場合は、 'javap -v'が答えです。 – Oak

6

ないあなたが必要な正確に何をしてくださいますが、離れてバイトコードを表示するためのコマンドラインツールですjavapから、あなたはjavassistasmcglibを見てみることができます - 彼らはあなたがJavaコードをバイトコードを解析することができます。

39

あなたはバイトコードを簡単に表示できるプログラムに導かれたかったので、私の提案はバイトコードを見るための組み込みサポートを持っているのでIntelliJ IDEAを使うことです。ここで

は(それはまた、あなたの選択のいくつかのキーにマップすることができます)それを行う方法の例です:

enter image description here

enter image description here

それは非常に簡単であり、それは確実に行うことができますeclipseまたはNetBeansでも同様です。

+0

行番号はどこですか? L0、L1とは何ですか? – voipp

+0

これはAndroidスタジオでも利用できますか?少なくともJVM用のクラスcompield(ローカルユニットテストなど)。 – PSIXO

+0

@PSIXO私は知っている、私はIntelliJをそのまま使用します。 – maba

関連する問題