Spring 源码深度解析-Spring源码导入

本文主要介绍如何导入Spring源码及遇到的小问题。

絮叨

最近准备开始逐步深入学习Spring源码,遂着手学习借阅已久的《Spring源码深度解析》这本书,但是到了第二章导入源码部分的时候碰到了小问题,本想借助度娘的力量轻松解决,但查阅资料都没能很好的解决我的问题(可能本人水平太低-_-|||,有些地方大神们以为很简单不值一提,一笔带过),然后结合大神博客里的方法,加上自己摸索算是解决了此问题吧。
特在此处mark一下,记录此问题方便以后查阅,同时能对同样问题的小伙伴有所启发也是极好的。

导入项目

按照书上的解释,同时编译整个Spring项目耗时耗资源,不建议采用,因此选择按照需求编译需要阅读源码的模块。

准备工作

在安装JDK1.8之后,安装gradle(据说gradle比maven更有优势,心向往之)。Java安装配置不再赘述,gradle的配置也类似于maven,下载-解压-配置路径。具体此处不再描述。

下载Spring源码

之后前往github下载Spring源码(或者通过git clone方式下载代码,当然前提是电脑里此时已经安装了github客户端或者类似的工具),可以选择下载mater分支,或者点击Tags选择release版本。
github源码

注:书上提供的git地址是springsource而不是此处的spring-project。应该是这里的为准。反正我是从这里下载的+_+。

编译及导入

然后在本地解压项目压缩包,选择需要阅读的模块目录,编译即可。

按照spring架构,spring-core、Beans等属于基础模块,书本推荐由浅入深了解,此处选择spring-beans,但beans模块依赖core,并且两者的问题均类似,缺少jar包,所以此处以beans举例说明问题。

在spring-core目录中点击上方的文件-打开命令提示符(或者win+R,然后输入cmd,回车,然后一步步cd切换至该目录)。
ps:win10及之前的win8好像都支持这样操作。
win10快捷cmd
在命令窗口中输入gradle cleanidea eclipse即可编译该模块并导入到eclipse中(import-General-Existing project into Workspace)。
这里写图片描述

此时就出现本文的重点了:eclipse中项目上出现感叹号,然后项目右击-Build path-Config build path,在出现的第三个Libraries的tab中,发现提示错误,并且按照网上的很多方法没能很好的解决我的问题。
检查本地project

然后在Windows-show view-problems发现提示以下错误。

问题描述

Project 'spring-core' is missing required library: '...spring-framework-master\spring-core\build\libs\spring-cglib-repack-3.2.0.jar'
Project 'spring-core' is missing required library: '...spring-framework-master\spring-core\build\libs\spring-objenesis-repack-2.2.jar'
The project cannot be built until build path errors are resolved

解决方法

原因及下载jar包

关于问题及出现的原因此文也有描述,请参考。
通过阅读源码发现为了避免第三方class的冲突,spring把最新的cglib和objenesis给repack了
关于创建spring源码环境时遇到的缺少spring-cglib-repack-3.2.0.jar和spring-objenesis-repack-2.2.jar两个包的问题

及所需的jar包(非常感谢,不用非得消耗可恶的硬币)。
spring-cglib-repack-3.2.0.jar
spring-objenesis-repack-2.2.jar

按照错误提示,需要将jar包放入指定的文件夹。
在spring-core目录下新建build文件夹,并在文件夹中新建lib文件夹,将下载的jar包放入文件夹内,最终如下:
本地目录结构

下载及放置jar包都没问题,关键是后面怎么做,让我这菜鸟很是烦恼,百般尝试后终于解决(泪奔ing)。

配置

回到刚才的项目右击-Build path-Config build path,然后在Libraries tab下选中出错的jar包,点击右侧的edit,切换目录至spring-core/build/lib/文件夹下,选中对应的刚刚放置好的jar包,两个jar包均这么做。然后apply,OK即可。

Done

然而这样的话,后面的其他出现类似问题的项目每次都要这么解决,很是麻烦。希望有更好的解决方法的朋友分享你的方法,感谢。
至此问题圆满解决。

后面是小插曲,觉得蛮有意思的,特此记录。

小插曲

突然发现spring-framework-4.2.5.RELEASE版本居然没问题,之前在master分支直接下载的源码,进行完上述步骤后出现了下面的问题:
spring源码master分支的某个错误

方法内部:
spring源码master分支的某个方法错误

具体问题:
错误1:
master分支spring-core错误1
错误2:
master分支spring-core错误1

Done

2016年3月2号,下午两点,再去github查看master分支的源码,发现问题已经解决。
github-问题解决

为大神们撒花~

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值