IDEA jdk-17 源码阅读配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA jdk-17 源码阅读配置相关的知识,希望对你有一定的参考价值。

参考技术A 就不解释上面这个缩写啥意思了。之前在 IDEA 上搭建的是 jdk-1.8 的阅读环境,网搜大多数搭建教程都是靠谱的。心血来潮想切换到最新的 jdk-17,中英文教程全部失效,摸索了一个暂时可行的方案,记录如下。

新建简单 java 项目,举例如图:

找到 jdk 安装路径的 src.zip 压缩包,解压到某文件夹下,取出 src/java.base 下的所有文件夹,包括 module-info.java,放到 prj/.../source 文件夹下即可。

同 jdk-1.8 的配置方法:

Spring源码阅读:使用IDEA搭建Spring5.0.x源码阅读环境

https://docs.gradle.com/enterprise/compatibility/#gradle_enterprise_gradle_plugin

 

说明

Spring源码阅读环境配置如下:

  • Spring 5.x版本
  • Gradle 4.8.1
  • JDK8
  • IDEA2020.1
  • win10

搭建步骤

1. 下载Spring源码

下载地址:Github链接,选择5.x版本

如果Github下载过慢,可以使用码云加速,镜像地址

另一种办法是通过梯子配置代理,也可以加速下载

2. 配置Gradle

Spring基于gradle构建,需要先安装配置Gradle

Gradle下载地址,选择complete版本,下载后加入环境变量,通过gradle -v验证是否配置成功

 

3. 构建项目

在进行预编译之前,需要检查以下几个地方:

  • gradle.properties: 查看版本是否正确
  • jdk版本和gradle版本

在代码目录下执行命令:

gradlew :spring-oxm:compileTestJava

等待编译成功。编译过程可能遇到如下问题:

  • An exception occurred applying plugin request [id: \'com.gradle.build-scan\', version: \'1.8\']

解决办法:Gradle版本问题,具体原因参考此链接

Gradle Build Tool versionsMinimum plugin versionMaximum plugin version
>= 6.0 3.0 3.3.1
5.0 - 5.6.4 2.0.2 3.3.1
4.1 - 4.10 1.8 1.16
4.0 1.7.4 1.16
2.0 - 3.5 1.0 1.16
< 2.0 not supported not supported
  • org.gradle.api.CircularReferenceException: Circular dependency between the following tasks:
    :spring-beans:compileGroovy
    --- :spring-beans:compileJava
    --- :spring-beans:compileKotlin
    --- :spring-beans:compileGroovy (*)

解决办法:循环引用问题,注释掉下面三行

4. 导入IDEA

File -> New -> Project from Existing Sources -> 找到 Spring 项目路径 -> 选中 build.gradle,并配置gradle,如下图所示


接下来idea会进行很长时间的build,下载相关jar包,耐心等待即可

可能出现如下问题:

  • 缺少jar包:spring-cglib-repack-x.x.x.jar、spring-objenesis-repack-x.x.jar

解决办法:在spring的解压目录下执行下面这两个命令

gradle objenesisRepackJar
gradle cglibRepackJar

调试代码

新建module,编写自己的代码,对spring代码进行走读。

关于module相关知识,可以参考另一篇文章:IDEA中Project和Module的关系

项目右击,New->Module


当然也可以创建基于Maven的module,如下所示:


创建module子项目以后,需要添加module依赖,方便导入相关包。如下所示:


至此,可以写代码了。我们创建一个简单的java bean,并打印。

Person.java:

public class Person 
    private String name;

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

Beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="person" class="org.wds.Person">
        <property name="name" value="zhangsan"/>
    </bean>
</beans>
Main.java:

public class Main 

    public static void main(String[] args) 
        ApplicationContext context =
                new ClassPathXmlApplicationContext("Beans.xml");
        Person obj = (Person) context.getBean("person");
        System.out.println(obj.getName());
    

运行结果如下所示:


至此,环境搭建成功,可以通过打断点对源代码进行调试和走读。




 

以上是关于IDEA jdk-17 源码阅读配置的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 配置 Hadoop 源码阅读环境

Spring源码阅读:使用IDEA搭建Spring5.0.x源码阅读环境

Idea下Kafka源码阅读编译环境搭建

用IDEA搭建spring源码阅读环境

SPRING01_基于gradle7.4.2和JDK17搭建Spring源码坏境

SPRING01_基于gradle7.4.2和JDK17搭建Spring源码坏境