上个系列的tomcat告一段落了 , 准备开始springmvc系列的源码阅读 ,spring官方搞了个大杂烩叫spring-framework ,使用gradle 构建,在环境搭建过程中踩了不少坑, 记录下
如果你使用jdk1.8 版本 请使用5.2.x分支
1. java home is differnet
出现该问题的原因是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
主要因为是连接国外的服务器网速过慢 ,该国内仓库地址解决
a. 项目根目录下build.grade修改 , 左侧是原版本的 ,右侧是修改的 :
修改内容如下:
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 配置 国内阿里云maven仓库。
pluginManagement {
repositories {
maven { url "https://maven.aliyun.com/repository/public" }
mavenCentral()
gradlePluginPortal()
maven { url "https://repo.spring.io/release" }
}
}
3. gradle download failed
网速不行,多下几次吧
4. 项目编译通过
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: 找不到符号
符号: 类 Objenesis
Error:(47, 23) java: 找不到符号
符号: 类 InstantiatorStrategy
位置: 类 org.springframework.objenesis.SpringObjenesis
Error:(49, 60) java: 找不到符号
符号: 类 ObjectInstantiator
位置: 类 org.springframework.objenesis.SpringObjenesis
Error:(68, 32) java: 找不到符号
符号: 类 InstantiatorStrategy
位置: 类 org.springframework.objenesis.SpringObjenesis
Error:(110, 20) java: 找不到符号
符号: 类 ObjectInstantiator
位置: 类 org.springframework.objenesis.SpringObjenesis
Error:(122, 23) java: 找不到符号
符号: 类 ObjectInstantiator
位置: 类 org.springframework.objenesis.SpringObjenesis
原因是Spring Framework为了避免与cglib和objenesis冲突,将cglib和objenesis相关的包重新repack到org.springframework.cglib和org.springframework.objenesis包中,这部分的代码没有包含到源码当中。构建之前,可以通过添加Gradle任务来解决,见:https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md#known-issues和https://youtrack.jetbrains.com/issue/IDEA-160605
解决办法如下:
在右侧的Gradle面板Spring -> Tasks -> other -> cglibRepackJar
https://blog.csdn.net/chenweijiSun/article/details/104814564