有时,在Eclipse中,我按下一组键,这些键将我带到显示我的.class文件(字节码)内容的编辑器页面。我似乎永远无法记住那个组合键是什么。
有人可以告诉我吗?
或者换句话说,如何才能看到自己的字节码?
答案 0 :(得分:11)
Eclipse的默认类文件查看器显示源(请参阅VonC的答案),如果它已与二进制文件关联,否则它提供类的类似javap的视图(带有附加源的选项)。我猜你正在寻找后者。
我从来没有找到一种方法来干净地强制Eclipse显示输出而不是链接源。您可能想要的是一个Eclipse插件,它提供类似Javap的功能(或javap的接口)。寻找说明他们“反汇编”的插件(而不是像“jad”那样“反编译”。
禁止使用插件,您可以配置一个外部工具来执行javap,但它可能无法与其他eclipse功能很好地配合使用。
编辑:让我清楚以上内容:如果您点击F3,Eclipse会执行以下操作(通常,实际过程可能略有不同):
对于类/方法声明,它继续在构建路径上搜索包含声明的类文件的引用。如果找到了,那么
a)如果类文件附加了源文件,请打开链接Java文件的只读编辑器。
b)如果类文件没有附加源,则打开一个只读面板,显示已编译类文件的反汇编(javap-like)字节码。
我的猜测是你认为有3.b的专用键序列,但我认为没有。但同样,我希望在这里被证明是错误的。
答案 1 :(得分:8)
您可以使用ASM 4.0插件。
<强>安装强>
可以从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;比较另一类字节码
答案 2 :(得分:7)
使用以下外部工具配置,我们可以在javap
的帮助下在eclipse中查看java字节代码:
要获取上述弹出窗口,请选择Run
选项,然后选择External Tools
并选择External Tools configuration...
${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
的情况空。
Dr. Garbage Tools is a suite of Eclipse Plugins released under Apache Open Source license.
使用Eclipse Marketplace安装字节码可视化工具。
查看字节码:
答案 3 :(得分:3)
嗯......如果在Navigator View或Package Explorer视图中选择了.class
,那么简单的 F3 足以在编辑器中打开它的反编译版本。
答案 4 :(得分:1)
正如user833970暗示的那样:Bytecode Outline插件:http://andrei.gmxhome.de/bytecode/index.html
在它的基础上,它为当前打开的Java文件提供了一个“字节码”视图,这是您正在寻找的。 p>
但是,您也可以将其指定为加载任何随机.class文件而不是默认的.class查看器,并且它在很多方面都超过了它。例如,如果单击“大纲”视图中的成员,则此查看器实际上会跳转到字节码中的右侧位置。
下载链接(用于dropin)可以在上述链接中找到,更新站点为http://andrei.gmxhome.de/eclipse/。
答案 5 :(得分:0)
我为此尝试了几种不同的解决方案。 在我看来,Bytecode Visualizer(此处为https://sourceforge.net/projects/drgarbagetools/)是最佳解决方案。它整齐地显示输出并明确它如何链接到源代码。我注意到在一些字节码上有一些小的误解,但是你可以得到它的要点。
不幸的是,它在撰写本文时似乎并不支持Neon。但它确实支持火星。
答案 6 :(得分:0)