Spring 4.2.0源码 导入 IDEA 流程 以及碰到的一些坑

第一次部署Spring 源码进入IDEA
真的是碰壁一大堆,所以写下一个流程,供读者学习。

流程

下载Spring 源码
观察部分文件,下载Gradle
正式部署项目
编译项目(bulid project)
测试小demo

1、下载源码

可以在GitHub上直接选择自己喜欢的版本进行下载 点击跳转.(已经下载有的就忽略以下)
进入GitHub页面之后,左边有一个 “ Compare ”
点击选择自己想要下载的版本。
然后会进入一个新的页面,再点击新页面上的 Code
就可以看到熟悉的下载页面啦!

2、观察文件,下载Gradle

真的非常重要,你们碰到的很多编译失败的原因,都是因为Gradle的版本问题
我当时部署的时候,是直接去gradle官网下载的,各种报错,什么 找不到 sonarRunner 啊,什么 classesDir 出错啊各种恼怒。
我也知道是gradle版本不合适,但是换了五六个都不合适,然后百度了一大堆,最后还是自己发现了。。。。

讲了那么多,现在就开始了!
首先解压spring源码后找到这个文件

右键打开记事本打开这个文件
(当然啦,如果你已经把项目导入IDEA了,也可以在IDEA里面找到这个文件,然后打开)

然后看到最后一行,是一个链接

这个链接是一个gradle的ZIP文件,那我们此时,就可以去复制粘贴到浏览器上了,浏览器就会下载一个gradle啦(谷歌浏览器下载国外软件速度是真的快 不是广告)
PS 这个 https\: 注意删掉冒号前的斜杠,不然浏览器不认为这是一个URL。

下载好了软件了,那我们就开始安装吧,其实也就是解压,然后配置以下环境变量。也就不多叙述了,网上的教程都是正确的。

好了,此时我们就有了最必要的两个文件了(IDEA就不用说了,推荐用最新,我用的是2018.2.4,出现了一个Kotlin出错的问题,具体哪个本版可以用我也不知道,我只知道怎么解决,下面会讲解)

3、正式部署项目

导入Spring 源码 (自己百度一下吧,都是非常简单的步骤了)

PS:千万不要用IDEA 的 open ,要使用import,选择源码中的bulid.gradle文件进行打开。
配置一下,不配置的话,IDEA不知道下面是什么文件
在这里插入图片描述
file ->setting 给项目配置gradle
在这里插入图片描述
选择刚刚下载的那个二步骤中下载gradle.ZIP的解压文件。
导入之后,IDEA 会自动下载相应的依赖包。外国网络,所以jar 包下载非常慢,而且会经常断掉,断开之后刷新一下gradle,就会继续下载了,多重试一下哈。
在这里插入图片描述
最后完成了之后呢,会显示 BUILD SUCCESSFUL
在这里插入图片描述

根据这三个地方判断。BUILD SUCCESSFUL 后面也不会跟着爆红。

编译

首先,我们需要下载一个 aspectj. 我下载的是1.8.5的
点击即可安装。
安装之后给你的IDEA配置一下
在这里插入图片描述
然后直接 编译整个项目 bulid project,如果没有报错,那么恭喜你,下面这些你全部可以不用看了。直接到达 小demo 步骤。

PS: 其实按原理来讲,ajc 是可以编译java文件的,但是呢,奇怪的是我的项目中有一个方法(ConvertingComparator),ajc编译不通过,只有javac可以。

暂时没有编译成功的同学们,不要着急。

对 spring-aspects文件夹中的main文件夹进行单独编译。(javac编译不了,所以改成 Ajc 去编译,也就是上图修改的原因)
在这里插入图片描述
这个编译成功了,里面会有新的文件产生(IDEA转圈转完了。但是可能没更新那么快,稍微等个几秒,还没有的话,就删掉这个空的classes文件夹,重新编译这个main 文件夹),claesse文件夹出来新文件之后,我们可以直接用编译。看看能否成功。

如果报错了 ,而且报错是关于ConvertingComparator 这个类的,那么你就看接下来的步骤,否则就酌情忽略下面步骤。

我们需要给他进行隔离(还有另一种隔离的方法,推荐另一种,自行百度)。鼠标右键spring-aspects文件夹,选择点击 load/…

在这里插入图片描述
下面这一步 中的2步骤 会提示你是否选择全部还是选择已选中的 moudle。
选择 中间的选项 也就是只选择 已选中的
在这里插入图片描述

你会发现这个文件夹颜色和其他的不一样了。

现在我们需要把刚刚设置的 Ajc 改回来成javac。以便编译后面剩下的文件。

直接bulid project 就可以啦。

创建demo测试

首先,我们先创建一个新的demo
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
再下一步直接 完成(finish)
等待IDEA自动配置。

在这里插入图片描述
在这里插入图片描述
导入需要用到的源码依赖。(全部导入,省时省力)
在这里插入图片描述
在这里插入图片描述
AppConfig.java (不放代码,多写写!!就几行,别偷懒)
在这里插入图片描述
Test.java
在这里插入图片描述
其实是我偷懒。。。。
接下来呢
直接运行,是会报错的,反正我报错了。看下面避坑中的第三点。

避坑

1、
错误信息:Can’t find bundle for base name misc.registry, locale zh_CN
解决:重启IDEA

2、
错误信息:Can’t find resource for bundle java.util.PropertyResourceBundle, key kotlin.gradle.

原因:IDEA的问题,也就是第二步提到的,推荐使用最新IDEA。当然啦,我也不知道哪个版本可以。

我的解决方法:打开IDEA的安装路径。依次打开 lib 文件夹,找到 util.jar ,然后右键解压到 tmp 文件夹下(tmp是自己键的,什么文件夹名随意)。解压之后找到并右键打开这个文件
在文件最顶端加上这串代码
kotlin.gradle.testing.enabled=false
保存
此时需要把这个文件重新编译成util.jar 包并将lib下的 util.jar替换掉。
重编jar包教程:
在需要打包的文件夹中,按住shift+鼠标邮件,点击在此处运行命令窗口(win10是PowerShell)
输入jar cvf xxx.jar *
xxx.jar是你要打包成的jar的名称,后边*号之间有空格

3、运行我们的新建的小 demo 时报错
提示我们java.lang.NoClassDefFoundError:org/springframework/cglib/core/NamingPolicy
解决:将spring core 中的 build/lib的spring-cglib-repack-3.3.0.jar和spring-objenesis-repack-3.0.1.jar 引入到新增的demo模块中在这里插入图片描述

好了,几千字,数十张图片,应该能解决很多人的疑惑了。
实际上我碰到的问题远远比上面的多,只是写的太累了,下次有时间我继续补充~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值