一、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 ,具体如下:

  1. D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\context\annotation\aspectj\SpringConfiguredConfiguration.java
  2. Error:(19, 49) java: 找不到符号
  3. 符号: 类 AnnotationBeanConfigurerAspect
  4. 位置: 程序包 org.springframework.beans.factory.aspectj
  5. Error:(47, 16) java: 找不到符号
  6. 符号: 类 AnnotationBeanConfigurerAspect
  7. 位置: 类 org.springframework.context.annotation.aspectj.SpringConfiguredConfiguration
  8. Error:(48, 24) java: 找不到符号
  9. 符号: 变量 AnnotationBeanConfigurerAspect
  10. 位置: 类 org.springframework.context.annotation.aspectj.SpringConfiguredConfiguration
  11. D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\cache\aspectj\AspectJJCacheConfiguration.java
  12. Error:(42, 16) java: 找不到符号
  13. 符号: 类 JCacheCacheAspect
  14. 位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
  15. Error:(43, 17) java: 找不到符号
  16. 符号: 类 JCacheCacheAspect
  17. 位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
  18. Error:(43, 49) java: 找不到符号
  19. 符号: 变量 JCacheCacheAspect
  20. 位置: 类 org.springframework.cache.aspectj.AspectJJCacheConfiguration
  21. D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\scheduling\aspectj\AspectJAsyncConfiguration.java
  22. Error:(43, 16) java: 找不到符号
  23. 符号: 类 AnnotationAsyncExecutionAspect
  24. 位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
  25. Error:(44, 17) java: 找不到符号
  26. 符号: 类 AnnotationAsyncExecutionAspect
  27. 位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
  28. Error:(44, 62) java: 找不到符号
  29. 符号: 变量 AnnotationAsyncExecutionAspect
  30. 位置: 类 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration
  31. D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\cache\aspectj\AspectJCachingConfiguration.java
  32. Error:(42, 16) java: 找不到符号
  33. 符号: 类 AnnotationCacheAspect
  34. 位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
  35. Error:(43, 17) java: 找不到符号
  36. 符号: 类 AnnotationCacheAspect
  37. 位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
  38. Error:(43, 53) java: 找不到符号
  39. 符号: 变量 AnnotationCacheAspect
  40. 位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
  41. D:\workspace\spring-framework-5.1.x\spring-aspects\src\main\java\org\springframework\transaction\aspectj\AspectJTransactionManagementConfiguration.java
  42. Error:(42, 16) java: 找不到符号
  43. 符号: 类 AnnotationTransactionAspect
  44. 位置: 类 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration
  45. Error:(43, 17) java: 找不到符号
  46. 符号: 类 AnnotationTransactionAspect
  47. 位置: 类 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration
  48. Error:(43, 56) java: 找不到符号
  49. 符号: 变量 AnnotationTransactionAspect
  50. 位置: 类 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包不存在的问题

  1. D:\workspace\spring-framework-5.1.x\spring-oxm\src\test\java\org\springframework\oxm\jaxb\Jaxb2UnmarshallerTests.java
  2. Error:(36, 41) java: 程序包org.springframework.oxm.jaxb.test不存在
  3. Error:(37, 41) java: 程序包org.springframework.oxm.jaxb.test不存在
  4. Error:(65, 17) java: 找不到符号
  5. 符号: 类 Flights
  6. 位置: 类 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests
  7. Error:(65, 36) java: 找不到符号
  8. 符号: 类 Flights
  9. 位置: 类 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests
  10. Error:(73, 17) java: 找不到符号
  11. 符号: 类 FlightType
  12. 位置: 类 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests

依次执行当前模块下的两个命令,最后clean,build  该模块即可

七、Error:(149, 36) java: 找不到符号:方法getResultStream() 位置:

接口 javax.persistence.Query

这个问题比较厉害,暴力解决

发现这几个错误,主要在test文件夹中,并不影响我们阅读Spring源码。简单起见,直接将相关测试代码注释掉。。

到此 spring 源码下载安装结束,可以开始源码学习了!

idea 导入spring 源码 踩坑记总结整理相关推荐

  1. IDEA(2020.3)导入Spring源码

    IDEA导入Spring源码(最新版源码) 博主于2022年4月7日从github中下载spring源码并导入idea(2020.3版本)中,遇到了不少的坑,下面来分享下整个过程. 第一步-下载Spr ...

  2. eclipse导入spring源码二(丢失的spring-asm-repack和spring-cglib-repack)

    在上一篇eclipse导入spring源码一 中已经完成一部分了,但是整个项目代码依然有报错: 很明显的错误,就是找不到jar(spring-asm-repack-5.0.1.jar和spring-c ...

  3. 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这两个依赖,网上试了几种方法感觉太麻烦了, ...

  4. IDEA导入Spring源码

    哈喽大家好,我是阿Q! 春节期间,有小伙伴私信我说想要研究下Spring的源码,想让我出一期教程来实现IDEA导入Spring源码,今天它来了~ 版本 :IDEA 2020.2.3 :Spring 5 ...

  5. idea导入spring源码_Spring源码入门到放弃(一):环境准备

    今天开始Spring源码的学习,年后面试Java高级研发岗,Spring底层的知识是必问知识,而且面试官问的很深入,以前没系统的了解过,现在开始恶补. 在此记录学习过程,不定期更新学习笔记.希望对大家 ...

  6. 导入Spring源码找不到包spring-cglib-repack和spring-objenesis-repack

    一.问题 1.最近准备阅读下Spring源码,学习下它优秀的架构和编程思想.但是出师不利. Spring源码git仓库:https://github.com/spring-projects/sprin ...

  7. 《Spring》第一篇 IDEA导入Spring源码

    目录 一. 下载源码 二. gradle 1. gradle 下载 2. 环境变量的配置 配置 GRADLE_HOME 配置 GRADLE_USER_HOME 三. Spring源码的配置文件修改 s ...

  8. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  9. 写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  10. JAVA_OA管理系统(三)番外篇:Myeclipse导入Spring源码包

    世界上只有10种程序员,看源码的和不看源码的: 今天,我们要看源码: 首先先用Ctrl键随便找个spring或者中的类,(其实myeclipse和eclipse导入源码包都是一样的) 第二步: 然后是 ...

最新文章

  1. Linux之nginx入门
  2. Densely CNN
  3. OpenStack进入第二阶段需要解决的“七宗罪”
  4. 深度学习(7) - 长短时记忆网络(LSTM)
  5. 【MySQL】MySQL 8不支持查询缓存
  6. maze3D-一款三维迷宫游戏
  7. 运用SMART法制定恰当的目标
  8. HTTP 状态码502 深度解析
  9. 洛谷P2184——贪婪大陆
  10. HDU 2246 神题?一千多行
  11. ConcurrentHashMap 1.7和1.8 源码解析
  12. 将你的现实生活照片变成卡通头像
  13. 记一次 【Unknown thread id: XXX】 的排查
  14. 关于海思3559A板子(润和出厂)启动的阶段性总结
  15. 双硬盘多系统独立引导(2-Windows xp Win7)
  16. PicGo配置(gitee)
  17. JSON解析(java)
  18. JAVA 车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。
  19. redis实战总结,go语言实现
  20. 2021-12-1 学习的打卡学习第九天(头插法和一些函数)

热门文章

  1. 深入剖析 redis 主从复制
  2. hdu 4057(ac自动机+状态压缩dp)
  3. 8086 MOV 指令的注意事项
  4. 毕业答辩的PPT全攻略(要用)
  5. JavaScript测试及答案
  6. 比亚迪发布九款新车 首次展示L4技术和BNA升级架构...
  7. lodash 数组裁剪 drop
  8. 前端每日实战:47# 视频演示如何用纯 CSS 创作一个蝴蝶标本展示框
  9. CentOS 6 系统优化检测脚本
  10. docker--强制删除none的image镜像