Java 源代码被 Intellij 中的反编译文件替换
Posted
技术标签:
【中文标题】Java 源代码被 Intellij 中的反编译文件替换【英文标题】:Java sources replaced by decompiled files in Intellij 【发布时间】:2016-11-19 15:27:39 【问题描述】:当我使用 ctrl + 右键单击 打开一个特定的类时,我应该被重定向到一个带有 java 源代码的窗口,其中包含所有行和适当的 cmets。但相反,我得到了一个带有反编译的 .class 文件的窗口。
我尝试停用反编译器插件,但它不起作用。
如果我将 http://docs.oracle.com/javase/8/docs/api 添加到项目结构 -> SDKs -> 文档路径,我可以大致了解我正在滚动的类或方法,但仍然无法打开正确的源文件。
有什么想法吗?
【问题讨论】:
我认为您看到的不是反编译的类文件,而是占位符。我认为您需要附加来源。 IntelliJ 中的 Maven 项目自动执行此操作 AFAIK。 Maven 的“自动下载”源/文档都被检查了 【参考方案1】:导航到源时,IDEA 将首先转到附加的源。如果不存在,它将反编译该类并显示它。
尝试以下故障排除方法来追踪问题:
1.确保源已正确连接。
对于库,打开项目结构对话框(Ctrl+Alt+Shift+S 或 ⌘;) 和左侧“项目设置”下的 sel4ct “库”。找到有问题的库,然后选择它。它将显示源是否已附加。您提到您已经检查了 Maven 的“自动下载”源/文档。因此,对于任何具有可用源的 maven 库,都应该列出它。
如果未列出或显示为红色,请从 Maven 工具窗口运行“下载源代码”或“下载源代码和文档”。如果源是红色的,这可能意味着它不适用于 maven 存储库中的该工件。使用Maven Search 进行验证。
对于 JDK,在 Project Structure 对话框中选择“SDKs”,找到 JDK,然后选择“Sourcepath”选项卡。确保列出了 jdk-home/src.zip 文件。
IDEA 应该会在你添加 JDK 的时候自动设置这个,如果没有,添加它。
2。确保源 JAR/ZIP 文件没有损坏
导航到资源管理器/查找器中的存档并确保它可以打开和查看。
3。刷新 IDEA 的缓存
IDEA 的缓存/索引可能已损坏。因此,IDEA 并没有“看到”类和源代码之间的联系。转到 File > Invalidate Caches / Restart..."。使缓存无效并重新启动 IDEA。等待 IDEA 完成对项目和库的重新索引(观察 IDEA 右下角的进度窗口)。
上述方法之一应该可以解决问题。
仅供参考,如果您不希望 IDEA 反编译代码(作为不存在源的备份),据我所知(并基于 its help page),这样做的唯一方法是禁用插件列表中的“Java Bytecode Decompiler”。
【讨论】:
第 2 步是我的问题。感谢您的详细回答。 令人惊讶的是,openjdk 源代码在 Ubuntu 中作为单独的包分发,即 openjdk-8-source。第一步确实有助于解决此类问题。 这对我有帮助。特别是第 1 步。万一有人找不到 src.zip,这里是如何在 Ubuntu 上添加它:sudo apt-get install openjdk-8-source
。以及 ubuntu 论坛的链接:askubuntu.com/questions/755853/how-to-install-jdk-sources【参考方案2】:
在确保我的源已附加,检查源 ZIP,使 IntelliJ 缓存无效并重新启动后,我仍然遇到同样的问题。
为了解决这个问题,我重新创建了项目File > New > Project From Existing Sources...
,当我进入库选择步骤时,我为我自己的模块取消选择.jars
。
【讨论】:
以上是关于Java 源代码被 Intellij 中的反编译文件替换的主要内容,如果未能解决你的问题,请参考以下文章