工作也3年多了,经常碰到人家问:看过spring源码没?看过java虚拟机工作原理没?。。。等等,一想自己,好像什么都没看过,就守着自己的一亩三分地来回“耕”,然后就想着看看spring源码,网上有很多资料,趁着上班空余时间,来回折腾了一天,最后也是没弄好,后来看见这个帖子,一步成功了。
分享下:
先配置好自己环境:
1. 正确安装jdk,并配置好JAVA_HOME、PATH。(我这里安装的是jdk1.8)
2. 正确安装好eclipse。(我的eclipse版本是: Oxygen Release (4.7.0))
1. 首先去下载spring的源码 https://github.com/spring-projects/spring-framework/releases。 因为我的jdk版本是1.8,所以我这里下载的版本是4.3.11。
下载完成之后解压到本地目录。
2. spring源码的编译需要gradle的支持,所以需要去gradle官网下载gradle https://gradle.org/gradle-download/。如果打不开可以到我的网盘下载: http://pan.baidu.com/s/1kVGu8yr
下载完成后同样只需要解压到本地目录,但是此时记得去配置环境变量 GRADLE_HOME和PATH。配置正确的话,在cmd输入: gradle -v 能够正确显示gradle版本。
3. 进入spring源码根目录,打开命令窗口,输入 import-into-eclipse.bat 运行脚本,这时候就开始编译spring源码并且生成可以导入eclipse的.classpath、.project文件了。在运行的开始可能出现下载类似:https://services.gradle.org/distributions/gradle-1.12-bin.zip 连接超时,这个是网络问题。可以多试几次,也可以在命令行请求这个文件的时候去浏览器直接输入这个路径。(我执行时没出现这个,可能网络好)
编译的时间非常长。在编译的过程中很有可能会出现错误,这时候需要根据具体的错误信息自行百度解决。这里说一个需要注意的地方就是:源码跟路径下的build.gradle文件中一般有下面的话:
compileJava {
sourceCompatibility = 1.6
targetCompatibility = 1.6
}
compileTestJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
options.compilerArgs += "-parameters"
}
这个就是指定源码编译使用的是jdk1.6,而测试代码编译使用的是jdk1.8。也就是此时应该要安装jdk1.8.
4. 一路回车编译完成就可以在eclipse中导入了,导入的时候记得勾选eclipse中的列出下层的所有工程选项,否则导入的就是一个大的spring工程而不是各个工程分开。
5. 导入完成之后发现spring-beans-groovy工程中有错误,这是由于eclipse中没有安装groovy插件导致的。直接: help--->install new software. 添加下面站点:
http://dist.springsource.org/snapshot/GRECLIPSE/e4.7/ 添加后选中required项进行安装。 不同版本的eclipse安装goorvy的站点列表参照:https://github.com/groovy/groovy-eclipse/wiki。安装完成之后重启eclipse即可,clean一下报错的工程即可。如果还报错,修改下groovy编译的级别为2.3:(正常也不会出现这个问题,我基本一步到位)
出现问题:
1.出现问题:The type java.util.concurrent.Flow$Publisher cannot be resolved. It is indirectly referenced from required .class files
最开始我下的spring源码是master分支上的,是最新的5.X,这个是jdk1.9的新特性,eclipse的jdk版本只要低于1.9都会报这个错误,下载对应版本的spring就OK了。
其他基本没碰上问题了,可以看源码了?
原帖地址:https://www.cnblogs.com/shijiaoyun/p/7458273.html