Java 源被 Intellij 中的反编译文件替换

Java sources replaced by decompiled files in Intellij

当我使用 ctrl + 右键单击​​ 打开特定的 class 时,我应该被重定向到带有 java 的 window包含所有行和适当评论的来源。但是我得到了一个 window 和反编译的 .class 文件。

我试图停用反编译器插件,但它不起作用。

如果我将 http://docs.oracle.com/javase/8/docs/api 添加到 Project Structure -> SDKs -> Documentation Paths 我可以得到 class 的概览或我正在滚动的方法,但仍然无法打开正确的源文件。

有什么想法吗?

导航到源时,IDEA 将首先转到附加源。如果不存在,它将反编译 class 并显示它。

尝试以下故障排除来查找问题:

1。确保源已正确附加。

对于库,打开“项目结构”对话框(Ctrl+Alt+Shift+ S or ;) and sel4ct "Libraries" 左边下 "Project Settings".找到有问题的库,然后 select 它。它将显示是否附加了源。您提到您已经检查了 Maven 的 "Automatically download" sources/documentation。因此,对于任何具有可用源代码的 Maven 库,都应该列出。

如果未列出或显示为红色,请运行 "Download Sources" 或 "Download Sources and Documentation" from the Maven tool window. If the source is till in red, it likely means it is not available for that artifact in the maven repository. Use Maven Search 进行验证。

对于Project Structure对话框中的JDK、select "SDKs",找到JDK,然后select "Sourcepath"标签。确保 {jdk-home}/src.zip 文件已列出。

添加 JDK 时 IDEA 应该会自动设置它,但如果没有,请添加它。

2。确保源 JAR/ZIP 文件未损坏

导航到 explorer/finder 中的存档并确保它可以打开和查看。

3。刷新 IDEA 的缓存

IDEA 的 caches/indexes 可能已损坏。因此,IDEA 不是 "seeing" class 和 class 之间的 link 和源代码。转到 File > Invalidate Caches / Restart...”。使缓存无效并重新启动 IDEA。等待 IDEA 完成重新索引项目和库(在右下角查看进度IDEA window)。

以上方法之一应该可以解决问题。

仅供参考,如果您不希望 IDEA 反编译代码(作为没有源代码的备份),据我所知(并且基于 its help page),唯一的方法是这就是禁用插件列表中的 "Java Bytecode Decompiler"。

确保我的源已附加、检查源 ZIP、使 IntelliJ 缓存无效并重新启动后,我仍然遇到同样的问题。

为了修复它,我重新创建了项目 File > New > Project From Existing Sources...,当我进入库选择步骤时,我为自己的模块取消了 .jars