Spring源码搭建问题的出现大部分都是版本导致的,现在总结源码构建所需要的各个组件的版本,本人已经顺利按照此方子服下良药,效果良好,以供大家交流学习,欢迎指正

Spring源码学习之环境搭建汇总:各个组件的版本一致性是最重要的!!!搭建环境过程中大部分都是各个软件的版本不支持导致的,经过耗时总结如下。

一:环境版本汇总

1:Spring- framework  version=5.3.24-SNAPSHOT

2:Idea     IntelliJ IDEA 2021.3 (Ultimate Edition)

3:Gradle   gradle-7.5.1

4:JDK      jdk-11.0.6

5:Kotlin idea中的kotlin版本适配的合适 213-1.5.10-release-949-IJ5744.223

6:git (建议高点版本)

亲测最后顺利编译通过(不知掉了多少头发,没有想到有点费劲,一天一坑,继续上路吧!)

kotlin 使用springboot org/springframework/core/kotlindetector_intellij-idea

二:环境搭建过程问题汇总

1:经过实战演练,摸索出来版本的确定

     首先源码分析学习时候确定是哪个大的版本,确定了就上GitHub上fork到自己仓库(没有GitHub账号的最好是自己创建一个)fork到自己的账号下,新建一个仓库,以便于今后你源码学习过程中的修改的记录保留下来,版本控制起来。

     确定大的版本之后查看当前版本的文件列表 

kotlin 使用springboot org/springframework/core/kotlindetector_spring_02

kotlin 使用springboot org/springframework/core/kotlindetector_ide_03编辑

 security.md文件中会告知你版本的最低要求,查看里边的jdk的要求

源码下载方法两种,git clone 自己仓库地方,git checkout 检出分支,源码导入自己idea中,检出分支也行,具体网上搜索。导入之后查看 X:\XXX\spring-framework\gradle\wrapper\gradle-wrapper.properties这个文件里边的gradle的支持,按照这个里边的gradle版本下载相应的版本就行,这样确定了gradle版本。

gradle版本确定了之后,查看版本信息 gradle -v 会告诉你它需要的相应的编译环境支持,如jdk,kotlin,groovy等版本,这样就确定了jdk的版本。

spring、jdk、gradle都确定了版本,最后是确定idea版本,这个也是跟spring是由gradle构建有关,gradle编译需要kotlin相应的版本支持,idea版本低的自带的kotlin版本会低,会有概率出现编译错误。最主要的三个版本确定了就开始搭建。

2:搭建过程,本人主要是版本不一致导致的各种问题出现,网上各种版本查看解决,有的还是不行,需要自己摸索,再继续上网搜索。说几个最主要的问题如下:

1> 报错信息:

Execution failed for task ':spring-debug:checkstyleMain'.

Checkstyle rule violations were found. See the report at

spring-framework/spring-debug/build/reports/checkstyle/main.html

  Checkstyle files with violations: 1

  Checkstyle violations by severity: [error:2]

分析解决:这个问题大概率会出现,这类都是因为spring自带校验规则导致的,我们的主要目的是源码学习,校验不重要,暴力解决,把它的校验规则注释掉就可以编译通过了,路径是src/checkstyle/checkstyle.xml里边的规则注释掉,我是全部都注释掉了。有兴趣可以自己研究。原因是spring使用了ant风格的代码检查。

2> 报错信息:

[deprecation] AccessibleObject中的isAccessible()已过时

              if (method.isAccessible() && !KCallablesJvm.isAccessible(function)) {

分析解决:最好是换版本,jdk版本,也有其他解决版本是添加注释,在报错信息中找到对应的类跟方法上,添加@SuppressWarnings("deprecation") 注解,尝试看看行不行,我是最好换了版本了就解决了。

3>报错信息:

找不到符号   符号:   类 AnnotationCacheAspect   位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration

分析解决:经过百度查询问题原因是spring源码的AOP使用了aspectj,而java不识别aspectj。因为Idea默认使用的是Javac编译器,而aspect关键字它不认识,所以我们就需要下载AspectJ编译器Ajc了,有了思路就撸起袖子开始干。

自行百度AspectJ官网,进入下载如下图

kotlin 使用springboot org/springframework/core/kotlindetector_intellij-idea_04

 我下载的是1.9.5版本,对应的是idea2021.3版本,jdk是11,安装配置完成,良好。

下载完之后是个jar包,放置到一个文件夹里边,在下载jar包文件夹目录地址栏cmd进入小黑窗口命令行,

kotlin 使用springboot org/springframework/core/kotlindetector_intellij-idea_05

执行命令:java -jar aspectj-1.9.5.jar        开始安装编译器

kotlin 使用springboot org/springframework/core/kotlindetector_java_06

开始弹框安装命令窗口,按着指示一路安装,有一个选择jdk的安装路径的,默认选中的就是你的jdk,这个要认真看,如果你电脑当前有多个jdk,需要选择你当前idea使用的版本,还有一个就是编译器安装的地址,这个应该无所谓了,可以跟jar包一个路径下就好。

打开idea,设置窗口打开,搜索aspectj插件,安装好,我这是安装完的,

kotlin 使用springboot org/springframework/core/kotlindetector_kotlin 使用springboot_07

打开 file》project structure窗口,两个模块需要添加:spring-aop、spring-aspects。

在这两个模板下选中main右键add,出来列表选中AspectJ。这个AspectJ选项是你插件安装了AspectJ才列出来的,没有安装则没有这个选项。最后一张图就是最后的添加效果。红框内就是需要添加的两个模块名字,1.2就是添加完的。

kotlin 使用springboot org/springframework/core/kotlindetector_intellij-idea_08

kotlin 使用springboot org/springframework/core/kotlindetector_ide_09

 

kotlin 使用springboot org/springframework/core/kotlindetector_kotlin 使用springboot_10

 最后配置ajs编译

kotlin 使用springboot org/springframework/core/kotlindetector_java_11

1是编译选项,平时都是javac;2是项目编译版本,jdk11;3是刚刚下载的aspectj的jar安装后的路径,选择到图中的jar即可;4是它只是编译你刚刚配置的AspectJ编译的Faces项目,即那两个模块所在项目,其他的项目还是用javac编译。

到此安装配置完了,再次编译就不会报刚刚那个错误了。这个报错解决完了,继续下一个坑。

4>报错信息:

Kotlin: [Internal Error] java.nio.file.InvalidPathException: Illegal char <<> at index报错

分析解决:查看gradle需要的kotlin版本,1.6.21,查看idea中的kotlin插件的版本,settings -> Languages & Frameworks -> kotlin 更新最新版本,方可解决

5>报错信息:

jdk.jfr.Category不存在,import jdk.jfr.category

分析解决:这个jfr好像是9才有的,jdk8没有,所以找不到,升级jdk解决,我是用的jdk11,安装完之后完美解决。

6>友善提示:build.gradle配置文件都是构建需要的配置,这里边也是需要版本配置好,kotlin版本也是尽量与idea自带的版本一致,太低都会报错,注意

kotlin 使用springboot org/springframework/core/kotlindetector_kotlin 使用springboot_12

其他错误就暂时不更了,还有各种不存在等错误,自行报错信息百度解决吧。

终于自测运行成功了,爆肝了。记录着天天坑。

Spring5.3.X源码环境搭建一天多坑,大部分还是版本导致的,只能多看,多尝试,多摸索,站在前人的肩膀上继续上路吧。多谢前辈分享的报错改正!