IntelliJ显示反编译的.class文件而不是源代码

tak*_*off 23 settings intellij-idea decompiler

我遇到IntelliJ的问题 - 如果我按住c +单击该类,它会向我显示该类的"反编译"版本而不是其源代码.

这就是我所看到的:

反编译的类消息

我正在尝试打开常规的JDK源文件.

我找到的最相关的问题在这里解释:Java源代替Intellij中的反编译文件

到目前为止我发现的最详细的答案也是如此.

但它对我不起作用:

  1. 字节码查看器插件已关闭.

  2. Java Bytecode Decompiler插件已关闭.

  3. 平台,项目和模块都具有相同的JDK版本设置.

  4. 我在IntelliJ中有两个JDK:jdk1.8.0_161和jbsdk8u112b287.2_windows_x86(与IntelliJ捆绑在一起,但没有src.zip).尝试两者(必须为jbskk指定src.zip jdk1.8.0_161为jbsdk8u112b287.2_windows_x86) - 没有运气

  5. src.zip没有损坏 - 我可以通过WinRAR打开它

  6. 将jdk1.8.0_161添加到IntelliJ时,它会自动找到src.zip.当手动将src.zip添加到jbsdk8u112b287.2_windows_x86 Sourcepath选项卡时 - 它开始"扫描根目录",但警告我"无法确定所选项目包含哪种文件"并提示我"将它们附加为'源''"所以我同意了.

  7. 尝试文件>无效缓存/重新启动... - 相同的结果.

  8. 2017.3和IntelliJ的2018.1新版本中的相同问题.

  9. 为文档提供路径使IntelliJ在指定的路径中查找文档.所以它适用于两个JDK.但不是来源.

  10. 其他所有工作/编译正确.

我的设置:

设置

Mat*_*aun 13

1.获取源文件

确保已下载并安装了JDK的源文件。

我在Arch Linux的安装和他们pacman -S openjdk8-src里面放src.zip/usr/lib/jvm/java-8-openjdk/。我们将在下一步中使用该zip文件。

要列出不同JDK版本的源软件包,请执行pacman -Ss "openjdk.*-src"

有关如何获取特定平台的源文件,请参见此问题

2.将IntelliJ指向源文件

F4“平台设置”下的模块设置中(用打开)。“ SDK”?“源路径”,使用带有加号的按钮将包含JDK源代码的zip文件添加到您的项目JDK(如果IntelliJ列出多个JDK,请确保选择正确的JDK):

Sourcepath屏幕截图

3.跳入源码

Comparator使用IntelliJ的Search EverywhereCtrl+ b,将光标放在类名称上,选择一个JDK类,例如。

比较器源

  • 更新:安装 openjdk-VERSION-source 使符号链接解析,现在工作正常。IntelliJ 和 Ubuntu 的令人困惑的行为共同使得这个问题难以破解。 (2认同)