请问有人可以告诉我吗?
换句话说,怎样才能查看自己的字节码呢?
${system_path:javap}
用于定位 Eclipse 使用的 JDK 中的 javap。您可以使用 javap 的绝对路径。
${project_loc}
返回项目的绝对路径。这是用于定位资源的 .class
文件的,因为我找不到一个预定义的变量来使用,所以 javap
在项目目录而不是包含 .class
文件的目录中运行。
传递给 javap
的参数之一:
bin
是 Eclipse 项目的默认输出文件夹。将其更改为项目使用的 build/classes
或其他值。请注意,该值相对于 ${project_loc}
;您也可以指定绝对路径。${java_type_name}
用于获取选定的类名。${project_loc}
为空的情况。
Dr. Garbage工具是一套在Apache开源许可下发布的Eclipse插件。
使用Eclipse Marketplace安装Bytecode Visualizer。
查看字节码:
在"窗口 > 首选项 > 通用 > 编辑器 > 文件关联"中将默认文件关联改为.class关联和没有源代码的.class关联都使用"类反编译器查看器"。
"*.class" : 默认情况下选择了"类反编译器查看器"。
"*.class without source" : 默认情况下选择了"类反编译器查看器"。
-XDinner
,以显示嵌套类。 - James您可以使用ASM 4.0插件。
安装
可以通过Eclipse Update Manager和ObjectWeb Eclipse Update Site http://download.forge.objectweb.org/eclipse-update/来安装Bytecode Outline插件。另外,也可以从ObjectWeb Forge网站下载插件并手动安装到Eclipse插件目录。
使用
查看当前.java或.class文件的字节码:
Window -> Show View -> Other -> Java -> Bytecode
比较两个.java或.class文件的字节码:
选择两个*.class或*.java文件 -> 右键单击 -> Compare with -> Each Other Bytecode
或者
选择一个*.class或*.java文件 -> 右键单击 -> Compare with -> Another Class Bytecode
好的...如果在导航器视图或包资源管理器视图中选择了.class
,只需按下F3即可在编辑器中打开反编译版本。
BufferManagerWriteCollect
的源代码恰好包含在JDK中。尝试打开sun.**子包中的任何内容,您就会明白我的意思。 - Mark Peters我已经尝试了几种不同的解决方案。 我个人认为,Bytecode Visualizer(可以在此处获取:https://sourceforge.net/projects/drgarbagetools/)是最好的解决方案。它整洁地显示输出,并清楚地说明它如何与源代码链接。我注意到一些字节码存在轻微的误解释,但可以理解其要点。
不幸的是,在撰写本文时,它似乎不支持Neon。但它确实支持Mars。