idea 导入spring 源码 踩坑记总结整理
一、spring源码下载
spring-framework下载地址:spring-framework github地址
二、idea 导入源码工程
三、解决 cglib和objenesis的编译错误
解决问题过程: (《Spring 源码深度解析》中介绍的解决过程和下面的有一点不同,不过最终都是导入jar包
spring-objenesis-repack 和 spring-cglib-repack)
百度云盘链接: https://pan.baidu.com/s/1YVcXmZnKKYisgRk3yZ8tFA 提取码:q561
这是因为spring在构建中,为了防止冲突,没有引入这两个包,需要自己引入,多数模块都有依赖到这两个包,
如 core (main和test 文件夹中都有):
四,解决Aspectj 问题
但是又报了新的错误: 找不到符号: 类 AnnotationBeanConfigurerAspect ,JCacheCacheAspect ,AnnotationAsyncExecutionAspect ,AnnotationCacheAspect ,AnnotationTransactionAspect ,具体如下:
- D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\context\annotation\aspectj\SpringConfiguredConfiguration.java
- Error:(19, 49) java: 找不到符号
- 符号: 类 AnnotationBeanConfigurerAspect
- 位置: 程序包 org.springframework.beans.factory.aspectj
- Error:(47, 16) java: 找不到符号
- 符号: 类 AnnotationBeanConfigurerAspect
- 位置: 类 org.springframework.context.annotation.aspectj.SpringConfiguredConfiguration
- Error:(48, 24) java: 找不到符号
- 符号: 变量 AnnotationBeanConfigurerAspect
- 位置: 类 org.springframework.context.annotation.aspectj.SpringConfiguredConfiguration
- D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\cache\aspectj\AspectJJCacheConfiguration.java
- Error:(42, 16) java: 找不到符号
- 符号: 类 JCacheCacheAspect
- 位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
- Error:(43, 17) java: 找不到符号
- 符号: 类 JCacheCacheAspect
- 位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
- Error:(43, 49) java: 找不到符号
- 符号: 变量 JCacheCacheAspect
- 位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
- D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\scheduling\aspectj\AspectJAsyncConfiguration.java
- Error:(43, 16) java: 找不到符号
- 符号: 类 AnnotationAsyncExecutionAspect
- 位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
- Error:(44, 17) java: 找不到符号
- 符号: 类 AnnotationAsyncExecutionAspect
- 位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
- Error:(44, 62) java: 找不到符号
- 符号: 变量 AnnotationAsyncExecutionAspect
- 位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
- D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\cache\aspectj\AspectJCachingConfiguration.java
- Error:(42, 16) java: 找不到符号
- 符号: 类 AnnotationCacheAspect
- 位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
- Error:(43, 17) java: 找不到符号
- 符号: 类 AnnotationCacheAspect
- 位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
- Error:(43, 53) java: 找不到符号
- 符号: 变量 AnnotationCacheAspect
- 位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
- D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\transaction\aspectj\AspectJTransactionManagementConfiguration.java
- Error:(42, 16) java: 找不到符号
- 符号: 类 AnnotationTransactionAspect
- 位置: 类 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration
- Error:(43, 17) java: 找不到符号
- 符号: 类 AnnotationTransactionAspect
- 位置: 类 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration
- Error:(43, 56) java: 找不到符号
- 符号: 变量 AnnotationTransactionAspect
- 位置: 类 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration
问题原因是spring源码的AOP使用了aspectJ ,而java不识别aspectJ
解决过程:
下载AspectJ
https://www.eclipse.org/aspectj/downloads.php
安装过程中3个设置我都是默认的 直接next(注意第二步要设置自己已经安装的jdk家目录)
安装第二部,要选择自己的jdk目录,如果jdk是安装板的,这里会自动选择,如果不是安装板的,需要手动选择一下。
选择aspectj安装目录
选择install。
为spring-aspect 工程添加Facets属性
File -> Project Structure -> Facets -> 点击 + 按钮 -> AspectJ -> 选择 spring-aop_main -> 点击OK -> 右键spring-aop_main的Kotlin 选择删除,(注意:如果发现idea的Facets点击后,右侧区域没反应,将项目删除,重新解压->导入idea即可)具体过程如下
最终的样子:
同上面给spring-aop_main添加Facets属性一样 给 spring-aspects_main 也添加Facets属性
五、更改编译器
再次编译 Build -> Build Project
六、spring-oxm 模块下 jaxb包不存在的问题
- D:\workspace\spring-framework-5.1.x\spring-oxm\src\test\java\org\springframework\oxm\jaxb\Jaxb2UnmarshallerTests.java
- Error:(36, 41) java: 程序包org.springframework.oxm.jaxb.test不存在
- Error:(37, 41) java: 程序包org.springframework.oxm.jaxb.test不存在
- Error:(65, 17) java: 找不到符号
- 符号: 类 Flights
- 位置: 类 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests
- Error:(65, 36) java: 找不到符号
- 符号: 类 Flights
- 位置: 类 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests
- Error:(73, 17) java: 找不到符号
- 符号: 类 FlightType
- 位置: 类 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests
依次执行当前模块下的两个命令,最后clean,build 该模块即可
七、Error:(149, 36) java: 找不到符号:方法getResultStream() 位置:
接口 javax.persistence.Query
这个问题比较厉害,暴力解决
发现这几个错误,主要在test文件夹中,并不影响我们阅读Spring源码。简单起见,直接将相关测试代码注释掉。。
到此 spring 源码下载安装结束,可以开始源码学习了!
idea 导入spring 源码 踩坑记总结整理相关推荐
- IDEA(2020.3)导入Spring源码
IDEA导入Spring源码(最新版源码) 博主于2022年4月7日从github中下载spring源码并导入idea(2020.3版本)中,遇到了不少的坑,下面来分享下整个过程. 第一步-下载Spr ...
- eclipse导入spring源码二(丢失的spring-asm-repack和spring-cglib-repack)
在上一篇eclipse导入spring源码一 中已经完成一部分了,但是整个项目代码依然有报错: 很明显的错误,就是找不到jar(spring-asm-repack-5.0.1.jar和spring-c ...
- IDEA导入Spring源码缺失spring-cglib-repack-3.2.6.jar和spring-objenesis-repack-2.6.jar
用IDEA导入Spring源码后缺失spring-cglib-repack-3.2.6.jar和spring-objenesis-repack-2.6.jar这两个依赖,网上试了几种方法感觉太麻烦了, ...
- IDEA导入Spring源码
哈喽大家好,我是阿Q! 春节期间,有小伙伴私信我说想要研究下Spring的源码,想让我出一期教程来实现IDEA导入Spring源码,今天它来了~ 版本 :IDEA 2020.2.3 :Spring 5 ...
- idea导入spring源码_Spring源码入门到放弃(一):环境准备
今天开始Spring源码的学习,年后面试Java高级研发岗,Spring底层的知识是必问知识,而且面试官问的很深入,以前没系统的了解过,现在开始恶补. 在此记录学习过程,不定期更新学习笔记.希望对大家 ...
- 导入Spring源码找不到包spring-cglib-repack和spring-objenesis-repack
一.问题 1.最近准备阅读下Spring源码,学习下它优秀的架构和编程思想.但是出师不利. Spring源码git仓库:https://github.com/spring-projects/sprin ...
- 《Spring》第一篇 IDEA导入Spring源码
目录 一. 下载源码 二. gradle 1. gradle 下载 2. 环境变量的配置 配置 GRADLE_HOME 配置 GRADLE_USER_HOME 三. Spring源码的配置文件修改 s ...
- java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实
好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...
- 写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实
好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...
- JAVA_OA管理系统(三)番外篇:Myeclipse导入Spring源码包
世界上只有10种程序员,看源码的和不看源码的: 今天,我们要看源码: 首先先用Ctrl键随便找个spring或者中的类,(其实myeclipse和eclipse导入源码包都是一样的) 第二步: 然后是 ...
最新文章
- Linux之nginx入门
- Densely CNN
- OpenStack进入第二阶段需要解决的“七宗罪”
- 深度学习(7) - 长短时记忆网络(LSTM)
- 【MySQL】MySQL 8不支持查询缓存
- maze3D-一款三维迷宫游戏
- 运用SMART法制定恰当的目标
- HTTP 状态码502 深度解析
- 洛谷P2184——贪婪大陆
- HDU 2246 神题?一千多行
- ConcurrentHashMap 1.7和1.8 源码解析
- 将你的现实生活照片变成卡通头像
- 记一次 【Unknown thread id: XXX】 的排查
- 关于海思3559A板子(润和出厂)启动的阶段性总结
- 双硬盘多系统独立引导(2-Windows xp Win7)
- PicGo配置(gitee)
- JSON解析(java)
- JAVA 车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。
- redis实战总结,go语言实现
- 2021-12-1 学习的打卡学习第九天(头插法和一些函数)