ASM字节代码视图显示“//无法生成字节码视图,未找到.class文件”

时间:2013-12-16 20:26:02

标签: java intellij-idea java-bytecode-asm

在安装了ASM Bytecode插件的IntelliJ中,您可以在查看类文件时在弹出菜单中选择“显示字节码大纲”。最近我的IntelliJ(社区版12.1.6)开始显示:

// couldn't generate bytecode view, no .class file found

在ASM窗口中。

这发生在我项目中不同模块的各种类文件中。奇怪的是,我会在一堂课上得到这个信息;但同一模块和包中的另一个类工作正常。

整个项目编译得很好,我的所有测试都会运行。我无法弄清楚为什么我会为一个课而不是另一个课获得此信息。

2 个答案:

答案 0 :(得分:0)

移动到IDEA 12之后我遇到了同样的问题,但是在升级到版本13之后,实际上能够查看字节代码轮廓的“正命中率”再次变得更加稳定。但是,结果仍然相当不满意。从日志中,我了解到插件似乎无法找到引用的类文件,即使它们存在。在尝试查看文件之前,它有助于制作项目,但这也不是一个完美的解决方案。我猜,问题会一直存在,直到有人惹恼了(也许你?)升级插件。

我现在使用的只是来自IntelliJ IDEA的 javap 。您可以通过执行以下操作添加外部工具:

  1. 设置>外部工具>添加...
  2. 为被调度程序设置 javap 位置:例如Windows上的 C:\ Program Files \ Java \ jdk7 \ bin \ javap.exe ,具体取决于您的安装路径。
  3. 添加 -v -c $ FileClass $ 作为参数(这里您当然可以设置实际需要的参数)。
  4. $ OutputPath $ 设置为工作目录。
  5. 现在,您可以在源代码视图的右键菜单中使用javap,还可以为命令定义快捷方式。

答案 1 :(得分:0)

根据Andrey Breslav的评论,对此问题的正确解决方法是在“视图”菜单中使用“显示字节码”命令。必须打开源文件才能显示此命令。自上次更改命令后,您必须已编译源以使命令成功完成。