Java源文件在IntelliJ中显示为空的反编译类文件

时间:2018-11-19 21:11:23

标签: java intellij-idea

我有一个包含多个.java文件的项目,除了一个文件外,我都可以在IntelliJ中完美查看其源代码。

该文件与其他文件一样是.java文件,但是IntelliJ将其标记为“反编译的.class文件”,并且源完全为空。如果在文本编辑器中打开文件,则可以看到源代码。 Ant构建与此文件也可以正常工作。

这些不是缺少的JDK源,您可能希望在这些源中看到反编译的代码。这也不是我正在打开的经过编译的.class文件。

从项目中删除文件并从源代码管理中进行更新以恢复该文件似乎无济于事。

这是我尝试在IntelliJ中打开文件时的样子:

IntelliJ <code>.java</code> file as Decompiled <code>.class</code> file

什么可能导致IntelliJ中的这种行为,我该如何解决?

2 个答案:

答案 0 :(得分:2)

如果您的项目中既存在相同的类(比较完全限定的名称),又同时来自第三方依赖,则IntelliJ有时会感到困惑。

如果在编辑器窗口中打开了反编译类并按“下载源”操作,则对于依赖项也会发生这种情况。这将导致另一个编辑器窗口打开同一类的刚刚下载的源代码,并使IntelliJ导航变得更加疯狂(Ctrl + Left click跳转和其他操作)。

我知道的唯一解决方案是重新启动IntelliJ,并希望它能工作。您也可以尝试File > Invalidate Caches and Restart,这将迫使IntelliJ重新索引世界。

答案 1 :(得分:0)

我确实解决了我的问题。

不知何故,我无意中将单个文件的名称添加到Java Class File Types列表中,因此该文件作为反编译的.class文件进行关联,其方式与实际的.class文件相同。

此修复程序将转到Settings (Ctrl+Alt+S)EditorFile Types,向下滚动到Recognized File Types列表中的Java Class,然后在{列表中选择文件名{1}},然后单击Registered Patterns按钮。

Settings, Editor, File Types Menu

我不知道如何将其自动添加到该列表中。一种猜测是我可能接受了建议弹出窗口或选择了错误的Intention Action,因此打开或活动文件的名称已添加到.class类型列表中。