Idea搭建JDK8源码环境
1.准备
IDE:IntelliJ IDEA
jdk:oracle JDK8
下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html
在JDK8的安装路径下找到src.zip压缩包,这就是我们需要的源码。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKyaCKNC-1613735785885)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231165448519.png)]](https://img-blog.csdnimg.cn/20210219195700660.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
2.搭建步骤
2.1新建项目
在Idea中,新建简单的java project,如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5k6dd2M-1613735785887)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231165624561.png)]](https://img-blog.csdnimg.cn/2021021919571386.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RfTRFp9S-1613735785890)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231165654235.png)]](https://img-blog.csdnimg.cn/20210219195729378.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Liktnpd2-1613735785894)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231165737383.png)]](https://img-blog.csdnimg.cn/20210219195740928.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NtZgSFqr-1613735785896)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231165802140.png)]](https://img-blog.csdnimg.cn/20210219195751578.png)
2.2添加源码
首先将JDK8的源码src.zip解压,然后将解压后的src目录下的所有文件拷贝到我们的项目src下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LWbKBwYR-1613735785897)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231170038461.png)]](https://img-blog.csdnimg.cn/20210219195800553.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
2.3替换关联的JDK
为了避免修改到其他项目所使用SKK的内容,我们需要添加自己的SDK,如下:
file->Project Structure->SDKs,移除Sourcepath下关联的src.zip。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-maMqUgNn-1613735785897)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231170623365.png)]](https://img-blog.csdnimg.cn/20210219195820233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
关联到我们自己项目的JDK源码路径。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TyUAdwlM-1613735785899)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231170705278.png)]](https://img-blog.csdnimg.cn/20210219195831503.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
修改项目,使用我们自己的JDK
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hb9yxXVU-1613735785900)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231171312750.png)]](https://img-blog.csdnimg.cn/20210219195841755.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
2.4解决资源不足的问题
File->Settings->Build,Execution,Deployment->Compiler
修改适当大一点。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pnbR2zFq-1613735785901)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231171522323.png)]](https://img-blog.csdnimg.cn/20210219195854243.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
2.5编译测试
当上面全部配置完成后,新建一个测试类,进行测试。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WnjCTauD-1613735785902)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231171859940.png)]](https://img-blog.csdnimg.cn/20210219195905127.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
这个时候需要构建一段时间,等待即可。
3.常见问题
3.1com.sun.tools.javac.api不存在
File->Project Structure->Libraries
添加JDK安装路径下的lib包到我们的项目中去。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xeI5zkhh-1613735785903)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231172607746.png)]](https://img-blog.csdnimg.cn/2021021919591660.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HeFa7huZ-1613735785904)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231172731150.png)]](https://img-blog.csdnimg.cn/20210219195924997.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
点击ok完成。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HKO2Qk7i-1613735785905)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231172757488.png)]](https://img-blog.csdnimg.cn/20210219195934794.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
3.2找不到sun.awt.UNIXToolKit和sun.font.FontConfigManager
1)在新项目中添加对应的包
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hoPdS9L-1613735785906)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231173014325.png)]](https://img-blog.csdnimg.cn/20210219195943481.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
2)到http://hg.openjdk.java.net中寻找对应的类
http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/e17fe591a374/src/solaris/classes/sun/awt/UNIXToolkit.java
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fuGZJNjb-1613735785907)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231173224554.png)]](https://img-blog.csdnimg.cn/20210219195954986.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/e17fe591a374/src/solaris/classes/sun/font/FontConfigManager.java
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TmKR6qO8-1613735785908)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231173356814.png)]](https://img-blog.csdnimg.cn/20210219200004761.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
将这两个类拷贝到我们项目刚刚新建的对应包下。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DTwaVNKp-1613735785908)(C:\Users\viruser.v-desktop\AppData\Roaming\Typora\typora-user-images\image-20201231173502636.png)]](https://img-blog.csdnimg.cn/20210219200014594.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3MjU4Njk0,size_16,color_FFFFFF,t_70)
复制进去后重新启动Idea,并再次编译即可。