web-dev-qa-db-ja.com

Eclipse IDEでJavaバイトコードを表示する方法は?

Eclipseで、キーの組み合わせを押すと、.classファイル(バイトコード)の内容を表示するエディターページが表示されることがあります。そのキーの組み合わせが何であるか思い出せないようです。

誰か教えてもらえますか?

または言い換えれば、どのようにして自分のバイトコードを見ることができますか?

22
James Raitsev

Eclipseのデフォルトのクラスファイルビューアは、バイナリに関連付けられている場合はソース(VonCの回答を参照)を表示します。それ以外の場合は、javapのようなクラスのビューを提供します(ソースを添付するオプションがあります)。あなたが探しているのは後者だと思います。

リンクされたソースではなく、その出力をEclipseに明確に強制する方法を見つけたことはありません。おそらく必要なのは、Javapのような機能(またはjavapへのインターフェース)を提供するEclipseプラグインです。 「jadのような「逆コンパイル」ではなく)「逆アセンブル」することを示すプラグインを探します。

プラグインがなければ、おそらくjavapを実行するように外部ツールを構成できますが、他のEclipse機能とうまく連動しない可能性があります。

編集:上記について明確にしましょう。F3を押すと、Eclipseは次のことを行います(通常、実際の手順は少し異なる場合があります)。

  1. ターゲットを解決します(Javaファイルを選択している場合、それはJavaファイル自体です。選択している場合、またはカーソルがクラス名の上にある場合メソッド宣言などと同様に、クラス宣言になります)。
  2. ビルドパスを検索し(同じプロジェクトを最初に)、Javaターゲットを含むファイルを見つけます。見つかった場合、そのJavaソースファイルを表示する書き込み可能なエディターを開きます。
  3. クラス/メソッド宣言の場合、宣言を含むクラスファイルのビルドパスの参照を引き続き検索します。見つかった場合、

    a)クラスファイルにソースが添付されている場合は、リンクされたJavaファイルの読み取り専用エディターを開きます。

    b)クラスファイルにソースが添付されていない場合は、コンパイルされたクラスファイルの逆アセンブルされた(javapのような)バイトコードを示す読み取り専用パネルを開きます。

3.b)には専用のキーシーケンスがあると思っていると思いますが、そうではないと思います。しかし、繰り返しますが、私はここで間違っていることが証明されたいです。

11
Mark Peters

ASM 4.0プラグインを使用できます。

enter image description here

インストール

バイトコードアウトラインプラグインは、Eclipse Update ManagerからObjectWeb Eclipse Update Siteでインストールできます http://download.forge.objectweb.org/Eclipse-update/ または、プラグインはObjectWeb Forgeサイト。Eclipseプラグインディレクトリに手動でインストールされます。

使用方法

現在の.Javaまたは.classファイルのバイトコードを表示するには:

ウィンドウ->ビューの表示->その他-> Java->バイトコード

2つの.Javaまたは.classファイルのバイトコードを比較するには:

2つの* .classまたは* .Javaファイルを選択します->右クリック->比較->その他のバイトコード

または

1つの* .classまたは* .Javaファイルを選択->右クリック->比較->別のクラスバイトコード

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

9
alex2k8

次の外部ツール構成を使用すると、javapの助けを借りて、EclipseでJavaバイトコードを表示できます。

enter image description here

上記のポップアップを取得するには、Runオプションを選択してExternal Toolsを選択し、External Tools configuration...を選択します。

enter image description here

${system_path:javap}は、Eclipseが使用するJDKでjavapを見つけるために使用されます。代わりに、javapへの絶対パスを使用できます。

${project_loc}は、プロジェクトへの絶対パスを返します。これは、使用する事前定義変数が見つからなかったため、リソースの.classファイルを見つけるために使用されます。そのため、javapは、プロジェクトを含むディレクトリではなく、プロジェクトのディレクトリで実行されます。 .classファイル。

javapに渡される引数の中には:

  • binは、Eclipseプロジェクトのデフォルトの出力フォルダーです。これをbuild/classesまたはプロジェクトで使用されているものに変更します。値は${project_loc}を基準にしています。代わりに絶対パスを指定できます。
  • ${Java_type_name}は、選択したクラス名を取得するために使用されます。

Javaファイルをプロジェクトエクスプローラービューまたはプロジェクトナビゲータービューで選択するか、Javaタイプを任意のビューで入力して、外部を実行することができます。ツール-注:この方法は、メソッドや内部クラスなどを選択してツールを実行すると、それ自体ではリソースではないため、${project_loc}が発生するシナリオにつながるため、うまく機能しません空の。

ソース


Dr。Garbage Toolsは、Apache Open SourceライセンスでリリースされたEclipseプラグインのスイートです。

Eclipse Marketplaceを使用してBytecode Visualizerをインストールします。

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

  1. .Javaファイルを右クリックし、open withを選択してotherを選択すると、次のポップアップが表示されます。
    enter image description here

  2. 「バイトコードビジュアライザー」を検索し、次のようにファイルを開くオプションを選択します。ここに、バイトコードオプションが表示されます。
    enter image description here


拡張クラス逆コンパイラ

「ウィンドウ>設定>一般>エディタ>ファイルの関連付け」

デフォルトをあなたのforboth .class associationに変更します。

*。class」:「クラスデコンパイラビューア」がデフォルトで選択されています。

"*。class without source": "Class Decompiler Viewer"がデフォルトで選択されています。

enter image description here

8
Premraj

まあ... .classは、ナビゲータービューまたはパッケージエクスプローラービューで選択されます。 F3 エディターで逆コンパイルしたバージョンを開くのに十分です。

http://img822.i_mageshack.us/img822/8735/eclipseclass.png

3
VonC

User833970が示唆するように:バイトコードアウトラインプラグイン: http://andrei.gmxhome.de/bytecode/index.html

そのベースで、現在開いているJavaファイル)の「バイトコード」ビューを提供します。これは、探していたものです。

ただし、デフォルトの.classビューアの代わりにランダムな.classファイルをロードするように割り当てることもでき、多くの点でそれを上回ります。たとえば、アウトラインビューでメンバーをクリックすると、このビューアは実際にはバイトコードの正しい場所にジャンプします。

ダウンロードリンク(ドロップイン用)は前述のリンクにあります。更新サイトは http://andrei.gmxhome.de/Eclipse/ です。

1
JBert

バイトコードに本当に興味がある場合は、テキストエディターを使用して.classファイルのバイトコードを開いて編集できるEclipseプラグインがあります。

https://github.com/itemis/jbc

enter image description here

0
Arne Deutsch

私はこれのためにいくつかの異なる解決策を試しました。バイトコードビジュアライザー(ここから入手可能: https://sourceforge.net/projects/drgarbagetools/ )は、私の意見では、最良のソリューションです。それは出力をきちんと表示し、それがソースコードにどのようにリンクするかを明確にします。一部のバイトコードでいくつかのマイナーな誤解に気づきましたが、その要点は理解できます。

残念ながら、執筆時点ではNeonをサポートしていないようです。ただし、火星はサポートします。

0
HesNotTheStig