我无法理解为什么 IDEA 将源文件显示为 .java

问题描述 投票:0回答:1

例如,当我想查看某个类的源代码(如

Thread
)时,我使用Ctrl + 单击导航到该类,它会显示
Thread.java
。但是,我不明白为什么会这样。 JDK不是像
rt.jar
那样打包成JAR文件,应该主要包含.class文件而不是.java文件吗?

那么为什么当我按住 Ctrl 键并单击时会看到

Thread.java
,而不是
Thread.class

此外,我在整个磁盘中搜索了

Thread.java
,但我在任何地方都找不到这个文件。

java
1个回答
0
投票

当您在 IntelliJ IDEA 中看到 Thread 等类的 .java 文件时,实际上是因为两个主要原因:反编译源和源附件。其工作原理如下:

编译的 JDK 文件:JDK 类确实打包为 JAR 中的 .class 文件,如 rt.jar(或较新的 JDK 中的模块)。但这些是编译后的文件,而不是原始的 .java 源文件。

反编译的源代码:默认情况下,IntelliJ 实际上可以反编译这些 .class 文件,让您以可读的格式查看代码。即使没有原始源代码,它也能够重建看起来非常接近 Java 代码的东西——减去注释或某些注释,这些注释或注释在代码编译时不会保留。

源附件:安装 JDK 时,它通常会在 JDK 根目录中附带一个 src.zip 文件。此 src.zip 包含原始 .java 源文件,IntelliJ 会自动将其附加到 JDK(如果可用)。通过此附件,IntelliJ 会向您显示实际的 .java 文件,而不是反编译的代码。

因此,当您按住 Ctrl 键并单击 Thread 这样的类时,IntelliJ 会向您显示此 src.zip 中的 .java 文件(如果可用)。如果您搜索磁盘但找不到 Thread.java,可能是因为您没有这个 src.zip 文件。并非所有 JDK 安装都包含它,但您通常可以下载包含它的版本。

© www.soinside.com 2019 - 2024. All rights reserved.