Java源代码由Intellij中的反编译文件替换

Luc*_*Nut 8 settings intellij-idea src decompiler

当我使用ctrl +右键单击打开一个特定的类时,我应该被重定向到一个包含所有行和相应注释的java源窗口.但相反,我得到一个反编译的.class文件的窗口.

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

如果我将http://docs.oracle.com/javase/8/docs/api添加到项目结构 - > SDKs - >文档路径,我可以获得我正在翻阅的类或方法的概述,但仍然可以'打开正确的源文件.

有任何想法吗?

Jav*_*aru 11

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

请尝试以下问题排查以跟踪问题:

1.确保正确连接信号源.

对于库,在"项目设置"下左侧打开项目结构对话框(Ctrl+ Alt+ Shift+ S;)和sel4ct"库".找到有问题的库,然后选择它.它将显示源是否附加.你提到你已经检查了Maven的"自动下载"源/文档.因此,对于任何有源可用的maven库,应该列出它.

在此输入图像描述

如果未列出或为红色,请运行"下载源"或"下载源和文档" 在此输入图像描述从Maven工具窗口.如果源为红色,则可能意味着它不可用于maven存储库中的该工件.使用Maven搜索来验证这一点.

对于JDK,在Project Structure对话框中选择"SDKs",找到JDK,然后选择"Sourcepath"选项卡.确保列出{jdk-home} /src.zip文件.

在此输入图像描述

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

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

导航到资源管理器/查找器中的存档,并确保可以打开和查看它.

3.刷新IDEA的缓存

IDEA的缓存/索引可能已损坏.因此,IDEA没有"看到"类和源代码之间的链接.转到文件>使高速缓存无效/重新启动... ".使高速缓存无效并重新启动IDEA.等待IDEA完成对项目和库的重新索引(观察IDEA窗口右下角的进度).

以上之一应解决问题.

仅供参考,如果您不希望IDEA反编译代码(作为备份到没有源存在),据我所知(并且基于其帮助页面),唯一的方法是禁用"Java" Bytecode Decompiler"在插件列表中.

  • 第2步是我的问题.谢谢你的详细解答. (2认同)
  • 令人惊讶的是,openjdk源在Ubuntu中作为单独的软件包分发,即openjdk-8-source。第一步确实可以帮助解决此类问题。 (2认同)