上個(gè)系列的tomcat告一段落了 , 準(zhǔn)備開始springmvc系列的源碼閱讀 ,spring官方搞了個(gè)大雜燴叫spring-framework ,使用gradle 構(gòu)建,在環(huán)境搭建過程中踩了不少坑, 記錄下
如果你使用jdk1.8 版本 請(qǐng)使用5.2.x分支
1. java home is differnet
出現(xiàn)該問題的原因是jdk版本不一致,最后在StackOverflow上找到解決方法 :
https://stackoverflow.com/questions/37960949/intellij-idea-says-java-home-is-different
Be sure to check and correct JDK version in these 3 places:
- Check Preferences -> Build,... -> Build Tools -> Gradle -> Gradle JVM:

- Check Project Structure -> Project Settings -> Project -> Project SDK:

- Check Project Structure -> Platform Settings -> SDKs:

2. com.gradle.enterprise', version: '3.9'] was not found
主要因?yàn)槭沁B接國(guó)外的服務(wù)器網(wǎng)速過慢 ,該國(guó)內(nèi)倉庫地址解決
a. 項(xiàng)目根目錄下build.grade修改 , 左側(cè)是原版本的 ,右側(cè)是修改的 :

修改內(nèi)容如下:
repositories {
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public'}
maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
maven { url "https://repo.spring.io/plugins-release" }
mavean { url "https://plugins.gradle.org/m2/" }
mavenCentral()
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
b. settings.grade 配置 國(guó)內(nèi)阿里云maven倉庫。
pluginManagement {
repositories {
maven { url "https://maven.aliyun.com/repository/public" }
mavenCentral()
gradlePluginPortal()
maven { url "https://repo.spring.io/release" }
}
}

3. gradle download failed
網(wǎng)速不行,多下幾次吧
4. 項(xiàng)目編譯通過
Error:(20, 50) java: 程序包org.springframework.objenesis.instantiator不存在
Error:(21, 46) java: 程序包org.springframework.objenesis.strategy不存在
Error:(22, 46) java: 程序包org.springframework.objenesis.strategy不存在
Error:(35, 41) java: 找不到符號(hào)
符號(hào): 類 Objenesis
Error:(47, 23) java: 找不到符號(hào)
符號(hào): 類 InstantiatorStrategy
位置: 類 org.springframework.objenesis.SpringObjenesis
Error:(49, 60) java: 找不到符號(hào)
符號(hào): 類 ObjectInstantiator
位置: 類 org.springframework.objenesis.SpringObjenesis
Error:(68, 32) java: 找不到符號(hào)
符號(hào): 類 InstantiatorStrategy
位置: 類 org.springframework.objenesis.SpringObjenesis
Error:(110, 20) java: 找不到符號(hào)
符號(hào): 類 ObjectInstantiator
位置: 類 org.springframework.objenesis.SpringObjenesis
Error:(122, 23) java: 找不到符號(hào)
符號(hào): 類 ObjectInstantiator
位置: 類 org.springframework.objenesis.SpringObjenesis

原因是Spring Framework為了避免與cglib和objenesis沖突,將cglib和objenesis相關(guān)的包重新repack到org.springframework.cglib和org.springframework.objenesis包中,這部分的代碼沒有包含到源碼當(dāng)中。構(gòu)建之前,可以通過添加Gradle任務(wù)來解決,見:https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md#known-issues和https://youtrack.jetbrains.com/issue/IDEA-160605
解決辦法如下:
在右側(cè)的Gradle面板Spring -> Tasks -> other -> cglibRepackJar
https://blog.csdn.net/chenweijiSun/article/details/104814564