spring源码下载、编译、debug的详细教程

零、资源准备及环境配置

记安装时间:2020.02.20
环境准备:
1、idea2019.3.3旗舰版,免费试用30天版本
2、gradle5.6版本
3、jdk1.8.0_202
4、spring源码。
spring源码下载链接:https://github.com/spring-projects/spring-framework
gradle安装及下载链接:https://gradle.org/install/#helpful-information
idea2.019.3.3下载链接:https://www.jetbrains.com/idea/download/other.html

一、spring源码的下载、编译、导入idea

前言:请仔细阅读README.md、import-into-idea.md文档

1、spring源码下载

git clone git://github.com/spring-projects/spring-framework.git
注意git clone速度会比较慢,可以使用如下方法提速:

1、使用nslookup命令查看如下url的ip:
github.com、github.global.ssl.fastly.Net、global-ssl.fastly.Net、assets-cdn.github.com

2、写入到/etc/hosts文件中
类似如下的形式:
13.250.177.223 github.com
205.186.152.122 github.global.ssl.fastly.Net
151.101.108.249 global-ssl.fastly.Net
185.199.109.153 assets-cdn.github.com

3、刷新dns缓存:
sudo dscacheutil -flushcache

4、git clone

2、gradle下载及安装

gradle的版本选择及安装直接参考官网文档:https://gradle.org/install/#helpful-information
gradle下载依赖速度比较慢,可以采用更改下载来源的方法提速:

在~/.gradle目录下创建名为init.gradle的文件,写入内容如下:
allprojects{
  repositories {
    def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
    all { ArtifactRepository repo ->
      if(repo instanceof MavenArtifactRepository){
        def url = repo.url.toString()
        if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
          project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
          remove repo
        }
      }
    }
    maven {
      url REPOSITORY_URL
    }
  }
}

3、spring源码编译

1、在spring-framework目录下,对Spring-oxm模块进行预编译,执行命令:./gradlew :spring-oxm:compileTestJava
2、在spring-framework目录下,对spring源码编译,执行命令:./gradlew build -x test,注意此处添加-x test命令是为了在编译期间忽略测试用例

4、spring源码导入idea

参考spring源码中的import-into-idea.md文档,导入方式如下:


然后勾选auto-import、点击使用本地的gradle,如果出现导入失败的问题,可能原因:
1)如果报错信息是gradle版本太高,则使用低版本的gradle,
2)如果是找不到Jar.class类的getArchiveFile()则说明gradle版本太低,安装高版本的gradle。亲测gradle5.6可用。
注:导入idea成功后记得要排除spring-aspects模块,因为这个模块有可能会导致编译无法通过。方法:选中spring-aspects模块右键,选择“Load/Unload Moudules”(我在导入时没有遇见这个问题)

二、创建spring demo测试

参考如下两个博客:
http://www.freesion.com/article/300775367/
https://blog.csdn.net/feichongyh/article/details/88819535
个人亲测,都可以执行成功。
如果执行期间遇见如下错误:
Kotlin: [Internal Error] java.lang.LinkageError: loader constraint violation:
loader (instance of org/jetbrains/kotlin/cli/jvm/plugins/PluginURLClassLoader$SelfThenParentURLClassLoader) previously initiated loading for a different type with name “kotlin/sequences/Sequence”
有可能是因为idea版本太低导致的,我刚开始使用的是idea2018,就会报这个错误,安装idea2019就没有这个问题了
参考博客:https://blog.csdn.net/u010316188/article/details/98887430

另外如果想新建gradle项目,可参考博客:https://www.jianshu.com/p/984fe1c67257

三、问题汇总

1、CoroutinesUtils找不到该类

Error:(354, 51) java: 找不到符号
符号: 变量 CoroutinesUtils
位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar

解决方法:
点击File -> Project Structure -> Libraries -> + -> Java,然后选择spring-framework/spring-core/kotlin-coroutines/build/libs/kotlin-coroutines-5.2.4.BUILD-SNAPSHOT.jar,在弹出的对话框中选择spring-core.main,在重新build项目即可。
1)打开Project Structure:

2)导入jar包:

3)选择kotlin-coroutines-5.2.4.BUILD-SNAPSHOT.jar:

4)选择spring-core.main:

备注:
1、如下图所示,在spring-core目录下有kotlin-coroutines目录:

2、找不到Jar.class类的getArchiveFile()

gradle版本过低导致找不到gradle中的某些类,重新安装高版本的gradle,如果不清楚安装哪个版本的,可以在参考该类的最后提交时间,安装早于该时间的gradle版本即可。

3、kotlin/sequences/Sequence错误

在idea的插件中升级kotlin,无法升级的话,就重新安装idea的版本即可,本人使用2019.3.3版本测试通过。

到此这篇关于spring源码下载、编译、debug的文章就介绍到这了,更多相关spring源码编译debug内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot项目设置断点debug调试无效忽略web.xml问题的解决

    刚接触springboot项目, (1)发现断点debug调试无效,很郁闷,网上搜索解决办法. 看到的都是一些很复杂的方案,说是远程调试,还要另外开端口号.这和传统的项目不一样,因此觉得没必要. 所以经过摸索,发现有一种更加简单的方式,步骤如下: 在pom文件的plugin部分加上一段配置: <configuration> <fork>false</fork> </configuration> 这样就ok了: (2)关于SpringBoot项目中报错说web

  • Spring实现源码下载编译及导入IDEA过程图解

    一.环境准备 idea版本:IntelliJ IDEA 2019.3.4 gradle版本:gradle-4.10.3 jdk版本:jdk-8u251-windows-x64.exe(1.8.0_251) Spring源码版本:spring-framework-5.1.x 说明:该套spring源码编译导入的环境是本人经过三天的不断调试更改后能够成功编译导入的一套环境,在首次编译成功后又进行了多次的重试均可一次编译成功.如环境与上述不一致,下面的步骤不保证spring源码能编译并导入IDEA百分

  • Spring-boot的debug调试代码实例

    这篇文章主要介绍了Spring-boot的debug调试代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 xml文件中配置: <property> <name>scf.server.vm.all</name> <value>-Xms512m -Xmx512m -Xmn128m -Xss1024K -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:

  • Spring Boot Debug调试过程图解

    这篇文章主要介绍了Spring Boot Debug调试过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近发现 Spring Boot 本地不能 Debug 调试了,原来 Spring Boot 升级后,对应插件的命令参数都变了,故本文做一个升级. 背景: Spring Boot 项目在使用 Spring Boot Maven 插件执行启动命令 spring-boot:run 的时候,如果设置的断点进不去,要进行以下的设置. 官方解决

  • 在IntelliJ IDEA 搭建springmvc项目配置debug的教程详解

    1.添加一个maven 2.选择maven 3.配置好需要debug的父工程 4.配置maven 5.最后就可以打断点debug了 到此这篇关于在IntelliJ IDEA 搭建springmvc项目配置debug的教程详解的文章就介绍到这了,更多相关IDEA 搭建springmvc项目配置debug内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • spring源码下载、编译、debug的详细教程

    零.资源准备及环境配置 记安装时间:2020.02.20 环境准备: 1.idea2019.3.3旗舰版,免费试用30天版本 2.gradle5.6版本 3.jdk1.8.0_202 4.spring源码. spring源码下载链接:https://github.com/spring-projects/spring-framework gradle安装及下载链接:https://gradle.org/install/#helpful-information idea2.019.3.3下载链接:h

  • Spring源码完美导入IDEA的过程

    小伙伴私信我说想要研究下Spring的源码,想让我出一期教程来实现IDEA导入Spring源码,今天它来了~ 版本 :IDEA 2020.2.3 ;Spring 5.0.x ;gradle 4.4.1 ; 先从github上面把 spring 源码下载下来并解压: 切记:解压完成后不要直接用IDEA 打开,因为Spring 的源码是用 gradle 构建的.如果已经用IDEA 打开了请删除后重新解压. 我们找到文件夹 spring-framework-5.0.x\gradle\wrapper 下

  • 基于spring+hibernate+JQuery开发之电子相册(附源码下载)

    项目结构: 项目首页: 注册页面: 上传图片: 效果图一: 效果图二: 效果图三: ============================================================= 下面是代码部分 ============================================================= 需要用到的数据库SQL: 复制代码 代码如下: drop database if exists db_ajax; create database db_

  • Android笔记之:CM9源码下载与编译的应用

    公司最近也开始基于android4.0 ICS修改框架了,公司的手机暂时不适合拿回家测试,也没有kernel的权限.从个人的角度看,我手上现在有两部手机,一部是Htc G9 Aria,一部是Samsung I9100 Galaxys2,Cyanogenmod的开源代码都提供了对这些手机的驱动支持,并且能方便的编译打包,并安装到手机.上一篇文章是android2.3的编译,已经过时,而且现在ubuntu已经升级到12.04,等等之类的,使我觉得非常有必要重新写一篇新的博客来展示最新的android

  • Idea 搭建Spring源码环境的超详细教程

    本篇主要讲解如何使用Ideal 搭建Spring的源码环境,想必大家都会多多少少去看过Spring的部分源码,一般我们都是直接点进某个Spring类 然后Idea上面去下载 ,但是确实比较麻烦,而且不能添加自己对源码的注释 理解 ,本篇就来解决这个问题,手把手使用Idea 搭建Spring framework ,并且直接在Spring framework项目中添加我们自己的module 来验证环境是否正确. 本过程会比较耗时 而且容易出错 慢慢来吧. 1. clone spring-framew

  • 快速搭建Spring Boot+MyBatis的项目IDEA(附源码下载)

    如何快速构建一个Spring Boot的项目工具 ideaJDK版本 1.8Spring Boot 版本 1.5.9环境搭建实现:最基础前端可以访问到数据库内的内容 开始 1.IDEA 内部新建一个项目,项目类型选择Spring Initializr,Project SDK选择适合你当前环境的版本,这里我选择的是1.8(Spring Boot 2.0以上的版本,JDK选择请选择1.8即以上版本),构建服务选择默认就好,点击Next 2.填写Group和Artifact(此处我使用的是默认,请根据

  • 教你使用IDEA搭建spring源码阅读环境的详细步骤

    目录 第一步.准备gradle环境 第二步.下载spring源码 第一步.准备gradle环境 1.去官网下载gradle https://gradle.org/releases/ 2.将其解压缩,创建repository文件夹 和init.d文件夹 创建init.gradle文件 输入文本信息,主要是配置阿里云镜像仓库地址,和maven的类似 gradle.projectsLoaded { rootProject.allprojects { buildscript { repositories

  • Android 源码如何编译调试

    android提供的工具链和开发工具比较完善,因此它的开发环境的搭建比较简单,相信许多朋友都已经搭建好环境,并编写了HelloActivity入门程序了.这里先看几个问题: 1.android的文件系统结构是怎样的,我们安装的程序放在那里? 编译android源码之后,在out/target/product/generic一些文件: ramdisk.img.system.img.userdata.img. system. data.root 其中, system.img是由 system打包压缩

  • Android仿腾讯QQ实现滑动删除 附源码下载

    看了很多大神们的文章,感觉受益良多,也非常欣赏大家的分享态度,所以决定开始写Blog,给大家分享自己的心得. 先看看效果图: 本来准备在ListView的每个Item的布局上设置一个隐藏的Button,当滑动的时候显示.但是因为每次只要存在一个Button,发现每个Item上的Button相互间不好控制.所以决定继承ListView然后结合PopupWindow. 首先是布局文件: delete_btn.xml:这里只需要一个Button <?xml version="1.0"

随机推荐