如何在eclipse IDE中查看Java字节码?

时间:2010-06-17 14:26:34

标签: eclipse file class editor bytecode

有时,在Eclipse中,我按下一组键,这些键将我带到显示我的.class文件(字节码)内容的编辑器页面。我似乎永远无法记住那个组合键是什么。

有人可以告诉我吗?

或者换句话说,如何才能看到自己的字节码?

7 个答案:

答案 0 :(得分:11)

Eclipse的默认类文件查看器显示源(请参阅VonC的答案),如果它已与二进制文件关联,否则它提供类的类似javap的视图(带有附加源的选项)。我猜你正在寻找后者。

我从来没有找到一种方法来干净地强制Eclipse显示输出而不是链接源。您可能想要的是一个Eclipse插件,它提供类似Javap的功能(或javap的接口)。寻找说明他们“反汇编”的插件(而不是像“jad”那样“反编译”。

禁止使用插件,您可以配置一个外部工具来执行javap,但它可能无法与其他eclipse功能很好地配合使用。

编辑:让我清楚以上内容:如果您点击F3,Eclipse会执行以下操作(通常,实际过程可能略有不同):

  1. 解析目标(如果您选择的是Java文件,它将是Java文件本身;如果您正在选择或者您的光标位于类名称之上,那么它将是类声明,类似于方法声明等)
  2. 搜索包含目标的Java文件的构建路径(首先是同一个项目)。如果找到,则打开一个显示该Java源文件的可写编辑器。
  3. 对于类/方法声明,它继续在构建路径上搜索包含声明的类文件的引用。如果找到了,那么

    a)如果类文件附加了源文件,请打开链接Java文件的只读编辑器。

    b)如果类文件没有附加源,则打开一个只读面板,显示已编译类文件的反汇编(javap-like)字节码。

  4. 我的猜测是你认为有3.b的专用键序列,但我认为没有。但同样,我希望在这里被证明是错误的。

答案 1 :(得分:8)

您可以使用ASM 4.0插件。

enter image description here

<强>安装

可以从Eclipse Update Manager使用ObjectWeb Eclipse更新站点http://download.forge.objectweb.org/eclipse-update/安装Bytecode Outline插件 或者,可以从ObjectWeb Forge站点下载插件,并手动安装在Eclipse插件目录中。

<强>用法

要查看当前.java或.class文件的字节码:

  

窗口 - &gt;显示视图 - &gt;其他 - &gt; Java - &gt;字节码

比较两个.java或.class文件的字节码:

  

选择两个* .class或* .java文件 - &gt;右键单击 - &gt;与 - &gt;比较彼此字节码

  

选择一个* .class或* .java文件 - &gt;右键单击 - &gt;与 - &gt;比较另一类字节码

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

答案 2 :(得分:7)

使用以下外部工具配置,我们可以在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}用于获取所选的班级名称。

您可以在Project explorer视图或Project导航器视图中选择Java文件,甚至可以在任何视图中选择Java类型,然后运行外部工具。注意 - 当您选择方法,内部类等然后运行工具时,这种方法不能很好地工作,因为它们本身不是资源,导致${project_loc}将成为.java的情况空。

Source

Dr. Garbage Tools is a suite of Eclipse Plugins released under Apache Open Source license.

使用Eclipse Marketplace安装字节码可视化工具

查看字节码:

  1. 右键点击open with文件,选择other并选择{{1}},您将获得以下弹出窗口:
    enter image description here

  2. 搜索&#34; Bytecode Visualizer&#34;并选择打开文件的选项,如下所示,您可以找到字节选项,如图所示:
    enter image description here

  3. Enhanced Class Decompiler

    &#34;窗口&gt;偏好&gt;一般&gt;编辑&gt;文件关联&#34;

    将默认值更改为 .class关联

    &#34;的 *类&#34。 :&#34;类反编译器查看器&#34;默认选中。

    &#34; *。无源课程&#34; :&#34;类反编译器查看器&#34;默认选中。

    enter image description here

答案 3 :(得分:3)

嗯......如果在Navigator View或Package Explorer视图中选择了.class,那么简单的 F3 足以在编辑器中打开它的反编译版本。

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

答案 4 :(得分:1)

正如user833970暗示的那样:Bytecode Outline插件:http://andrei.gmxhome.de/bytecode/index.html

在它的基础上,它为当前打开的Java文件提供了一个“字节码”视图,这是您正在寻找的。

但是,您也可以将其指定为加载任何随机.class文件而不是默认的.class查看器,并且它在很多方面都超过了它。例如,如果单击“大纲”视图中的成员,则此查看器实际上会跳转到字节码中的右侧位置。

下载链接(用于dropin)可以在上述链接中找到,更新站点为http://andrei.gmxhome.de/eclipse/

答案 5 :(得分:0)

我为此尝试了几种不同的解决方案。 在我看来,Bytecode Visualizer(此处为https://sourceforge.net/projects/drgarbagetools/)是最佳解决方案。它整齐地显示输出并明确它如何链接到源代码。我注意到在一些字节码上有一些小的误解,但是你可以得到它的要点。

不幸的是,它在撰写本文时似乎并不支持Neon。但它确实支持火星。

答案 6 :(得分:0)

如果您真的对字节码感兴趣,可以使用eclipse插件,使用文本编辑器打开和编辑.class文件的字节码。

https://github.com/itemis/jbc

enter image description here