【问题标题】:Java sources replaced by decompiled files in IntellijJava 源代码被 Intellij 中的反编译文件替换
【发布时间】:2016-11-19 15:27:39
【问题描述】:

当我使用 ctrl + 右键单击​​ 打开一个特定的类时,我应该被重定向到一个带有 java 源代码的窗口,其中包含所有行和适当的 cmets。但相反,我得到了一个带有反编译的 .class 文件的窗口。

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

如果我将 http://docs.oracle.com/javase/8/docs/api 添加到项目结构 -> SDKs -> 文档路径,我可以大致了解我正在滚动的类或方法,但仍然无法打开正确的源文件。

有什么想法吗?

【问题讨论】:

  • 我认为您看到的不是反编译的类文件,而是占位符。我认为您需要附加来源。 IntelliJ 中的 Maven 项目自动执行此操作 AFAIK。
  • Maven 的“自动下载”源/文档都被检查了

标签: intellij-idea settings src decompiler


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 2014-03-31
    • 2017-06-06
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多