在IntelliJ或其他IDE中获取完整的JDK源代码

Cor*_*ein 3 java eclipse intellij-idea

我的IDE非常适合为JDK类找到相应的Java源代码。例如,我可以java.lang.String在IDE中打开并查看实际的Java源代码。但是,当我尝试打开sun.net.www.http.HttpClient(包含在Java SDK中)时,IDE只是向我显示了反编译的.class文件,很难读取。

我在macOS上的IDE正在寻找中的源代码/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/src.zip,如果我解压缩该归档文件String.javaHttpClient.java则可以找到,但无处可寻。因此,我的IDE找不到它是有道理的。

在哪里可以获得完整的JDK源代码?

Cor*_*ein 5

如果您使用的是Linux,则可以在OpenJDK Project上找到更完整的源代码存档。但是在macOS以及可能的其他平台上,这是一种对我有用的方法:

从Github下载完整的Java源代码

git clone https://github.com/openjdk-mirror/jdk.git
cd jdk
git checkout jdk8u/jdk8u/master    # For Java 8
Run Code Online (Sandbox Code Playgroud)

查找您感兴趣的Java包

find . -name HttpClient.java       # Or whatever class you want
./src/share/classes/sun/net/www/http/HttpClient.java
Run Code Online (Sandbox Code Playgroud)

在这里,您可以看到它位于目录sun.net.www.http.HttpClient中的sun包中src/share/classes

使用其中的软件包制作一个新的源档案

mkdir ~/java
# Replace path below with location of JDK on your machine
unzip /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/src.zip -d ~/java
cp -r ./src/share/classes/sun ~/java
Run Code Online (Sandbox Code Playgroud)

重建档案并将其放回原处

cd ~/java
zip -r src.zip *
cp src.zip /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/src.zip
Run Code Online (Sandbox Code Playgroud)

您可能必须重新启动IDE,但是现在它应该能够找到以前缺少的源代码。

  • 获取源代码的更好方法在这里 [链接](/sf/ask/202770921/) sudo apt-get install openjdk-7-source (2认同)