【问题标题】:IntelliJ shows decompiled .class file instead of source codeIntelliJ 显示反编译的 .class 文件而不是源代码
【发布时间】:2018-09-08 12:37:34
【问题描述】:

我在使用 IntelliJ 时遇到问题 - 如果我 ctrl+单击该类,它会显示该类的“反编译”版本而不是其源代码。

这是我看到的:

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

我发现的最相关的问题在这里解释:Java sources replaced by decompiled files in Intellij

到目前为止我找到的最详细的答案也在那里。

但它对我不起作用:

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

  2. Java Bytecode Decompiler 插件已关闭。

  3. Platform、Project 和 Module 都具有相同的 JDK 版本设置。

  4. 我在 IntelliJ 中有两个可用的 JDK:jdk1.8.0_161 和 jbsdk8u112b287.2_windows_x86(与 IntelliJ 捆绑在一起,但没有 src.zip)。两者都试过(必须为 jbsdk8u112b287.2_windows_x86 指定 jdk1.8.0_161 的 src.zip)- 不走运

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

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

  7. Tried File > Invalidate Caches / Restart... - 结果相同。

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

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

  10. 其他一切工作/编译正常。

我的设置:

【问题讨论】:

  • 项目/模块中使用了 2 个配置的 JDK 中的哪一个?它有附加的来源吗?尝试删除第二个 JDK 配置。
  • 感谢您的回复。我在项目/模块中与它们保持一致的同时尝试了这两个 jdks,但没有运气。刚刚删除捆绑的jdk,缓存无效,重新启动。问题仍然存在。现在我有两台机器可以比较。两者都有相同的新 IDE 版本。两者都运行 32 位版本的 Intellij。两者都安装了相同且唯一的 jdk 版本(jdk1.8.0_161)。两者都有相同的设置(通过设置存储库同步)。在第二台机器上一切正常!创建新项目时的行为相同。我什至不知道现在该尝试什么......
  • 尝试删除 IDE 配置 (intellij-support.jetbrains.com/hc/articles/206544519),然后在不导入设置的情况下从头开始设置所有内容。
  • 好的,看来问题出在项目本身。删除设置可以解决问题,直到我打开项目。然后我收到这条反编译消息,要求同意某些条件,然后它开始再次向我显示反编译的代码版本。不得不重新导入它而不是重新打开
  • 不幸的是,它仍然不时发生。现在在我的 Android Studio 项目中.. 懒得反击.. 如上所述尝试删除设置并重新导入您的项目

标签: intellij-idea settings decompiler


【解决方案1】:

1。获取源文件

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

我在 Arch Linux 上并使用 pacman -S openjdk8-src 安装它们,这会将 src.zip 放入 /usr/lib/jvm/java-8-openjdk/。我们将在下一步中使用该 zip 文件。

要列出不同JDK版本的源码包,请pacman -Ss "openjdk.*-src"。

请参阅this question,了解如何获取特定平台的源文件。

2。将 IntelliJ 指向源文件

在“Platform Settings”→“SDKs”→“Sourcepath”下的模块设置(使用 F4 打开)中,将包含 JDK 源的 zip 文件添加到您的项目 JDK(请务必如果 IntelliJ 列出了多个 JDK,则选择正确的 JDK)使用带有加号的按钮:

3。跳转到源码

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

【讨论】:

    【解决方案2】:

    如果您在一个 maven 项目中,请确保在项目结构中所有编译的文件夹都在排除部分中。

    【讨论】:

    • 与包含 JDK 的源文件无关。
    【解决方案3】:

    我遇到了同样的问题,最后在我将 JDK 复制到另一个文件夹并在 IntelliJ 中更改配置后它就消失了。我想可能是因为之前路径中有空格,因为它安装在“Program Files”文件夹下。

    【讨论】:

      【解决方案4】:

      这对我有用:

      确保选择“项目文件”选项(而不是例如“项目”)。

      【讨论】:

      • 离基地很远。与 IntelliJ 无法访问 JDK 源文件完全无关。
      【解决方案5】:

      我也有同样的问题。我的问题是Project SDK 设置为13 [Invalid]。之后我可以Project SDK 到一个有效的SDK。我的问题解决了。

      【讨论】:

        【解决方案6】:

        要下载属于jar的类文件的源代码,您可以使用反编译的类文件右上角的下载源选项。

        【讨论】:

        • 根据我的经验,这不适用于 JDK,仅适用于 maven 依赖项。而且,对于那些,特别是,您可以将 IntelliJ 设置为始终下载 maven 源代码。
        【解决方案7】:

        为此,我尝试了其他地方提到的所有方法,但最后我犯了一个愚蠢的错误。 Intellij 指向没有源代码的 JDK 11(我同时拥有 SDK 8 和 11)。我删除了 JDK 11 并指向 JDK 8。JDK 有源代码,因此现在我可以在 ctrl 单击上看到源代码。另外,我禁用了字节码查看器和反编译器插件。希望这对某人有所帮助。

        【讨论】:

        • 禁用字节码查看器和反编译器插件对我有用,因为我已经尝试了其他所有方法。谢谢!
        【解决方案8】:
        1. 我建议使用 Linux 而不是 windows。很容易找到和下载 Java。
        2. 如果你使用Linux,你可以download SDKMAN
        3. Install Java 来自 SDKMAN
        # find version
        $ sdk list java
        # download
        $ sdk install java x.y.z-amzn
        
        1. ctrl+alt+shift+s添加JDK

        2. 切换项目JDK

        【讨论】:

          【解决方案9】:

          这也发生在大文件上 - IDEA 决定在索引源时反编译它们,这可能需要很长时间。 如果您愿意接受提款,请在 Help | 中添加以下内容编辑自定义属性可能会解决问题:

          idea.max.intellisense.filesize=4096
          

          【讨论】:

            【解决方案10】:

            如果您使用的是 maven ,请右键单击项目资源管理器 -> 选择 Maven -> 小鸡“重新加载项目”

            【讨论】:

            • 这永远不会拉入 JDK 源文件。
            【解决方案11】:

            在我的 Windows 10 上,展开 maven:

            【讨论】:

            • 这仅适用于依赖项,不适用于 JDK 源代码。
            【解决方案12】:

            在ubuntu上,当我更改为“Oracle Java”时,有java版本“OpenJDK”,错误消失了,javadoc返回了

            【讨论】:

              猜你喜欢
              • 2016-11-19
              • 1970-01-01
              • 2014-03-31
              • 2014-12-27
              • 2019-12-01
              • 1970-01-01
              • 2015-11-09
              • 2014-05-28
              • 2018-08-04
              相关资源
              最近更新 更多