精华内容
下载资源
问答
  • spring源码编译缺少jar包,spring-cglib-repack-3.2.5.jar和spring-objenesis-repack-2.6.jar。
  • 包括spring-cglib-repack-3.2.0.jar和spring-objenesis-repack-2.1.jar,解决了spring源码编译后缺少的cglib和objenesis的问题。
  • 废话不多说,本篇就如何在我们的intelliJ IDEA编译Spring源码的步骤以及在编译的过程中遇到的问题做一个详细说明。 环境 开发工具:IntelliJ IDEA 2019.3.3 编译工具:gradle-6.4-rc-4 操作系统:Windows 10 Spring...
  • spring源码编译完整版

    千次阅读 2020-08-13 15:55:13
    Spring源码编译 环境及版本介绍 JDK------1.8及以上 spring版本,在此,本人选择的是5.2.0的版本 开发工具,本人使用的时IDEA,工具版本不影响 编译前的准备 安装JDK(安装方法网上很多,自己查找安装) 下载...

    Spring源码编译

    环境及版本介绍

    • JDK------1.8及以上
    • spring版本,在此,本人选择的是5.2.0的版本
    • 开发工具,本人使用的时IDEA,工具版本不影响

    编译前的准备

    1. 安装JDK(安装方法网上很多,自己查找安装)
    2. 下载spring源码,可以从spring官方的github库中(https://github.com/spring-projects/spring-framework)进行下载。由于需要从国外下载,速度可能会慢,在此提供一个下载好的(链接:https://pan.baidu.com/s/18lEeQCwQKo1E4bli4SAJ2A
      提取码:dvda)

    编译源码

    1. 使用Gradle来预编译spring-oxm(Gradle是个构建系统,能够简化你的编译、打包、测试过程,可以类比成Maven)Gradle的子项目工具gradle wrapper的作用就是简化Gradle本身的安装、部署。因为不同项目可能需要不同的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper搞定这些事。
    2. 解压spring源码包,为了使得GradleWrapper更快连接服务器,在解压的文件中找到build.gradle文件,修改其镜像
      在这里插入图片描述
    3. 在build.gradle文件中修改的步骤:
      a 、plugins上方,buildscript里面加入
    repositories{
    		maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/' }
    		maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
    	}
    

    在这里插入图片描述
    b、在resolutionStrategy下方,configurations.all上方加入

    repositories {
    		
    			maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/' }
    			maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
    
    			mavenCentral()
    			maven { url "https://repo.spring.io/libs-spring-framework-build" }
    		}
    

    在这里插入图片描述

    1. 执行指令预编译spring源码(可能需要耗时几十分钟,看网速)
      进入命令行终端cmd,通过命令行进入到spring源码文件路径,执行.bat文件,执行命令行如下:
     gradlew.bat :spring-oxm:compileTestJava
    

    在这里插入图片描述
    5.如果编译成功,或者试了很多次都是超时问题,则可以直接打开idea,由于idea自带
    Gradle插件(也可以额外配置安装上)先将项目导入

    在这里插入图片描述
    在这里插入图片描述
    直接在idea上操作,如果导入的时候出现某些jar下载超时。

    在这里插入图片描述
    可以直接点击该jar的下载链接尝试下载,下载完成后,需要找到gradle默认的保存的repository路径,具体可以打开idea->setting->build,Execution,Deployment->Gradle->gradle user home去找到相关路径。
    在这里插入图片描述

    随后,去到.gradle目录下的caches\modules\files-2.1目录中,按照url路径进入目录,将下载的jar包拷贝到这里面。

    针对于刚才编译成功的,到这里直接在idea里面refresh就完成源码的编译了

    针对于没有编译直接先用idea导入的,到这一步之后,也可以在原来的cmd路径下面执行

     gradlew.bat :spring-oxm:compileTestJava
    

    重新编译,之后点击刷新按钮reimport项目就可以了(如果先前已成功,则直接在idea里面refresh就好了)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • IDEA2021 Spring 源码编译

    2021-07-22 10:25:50
    Spring 源码编译 心血来潮突然想看下spring的源码,我用的是idea2021,spring版本是5.2.x,但是网上基本上都是以前的版本,所以想记录一下。 1.下载spring源码 在码云上通过git克隆源码...

    Spring 源码编译

    心血来潮突然想看下spring的源码,我用的是idea2021,spring版本是5.2.x,但是网上基本上都是以前的版本,所以想记录一下。

    1.下载spring源码

    在码云上通过git克隆源码https://gitee.com/mirrors/Spring-Framework.git

    2.下载gradle

    查看Spring-Framework/gradle/wrapper/gradle-wrapper.properties文件对应的gradle的版本号。
    在这里插入图片描述
    并自行去gradle官网下载,找到对应的版本号。
    在这里插入图片描述
    3.配置gradle环境变量

    vim ~/.bash_profile
    我是mac,配置环境变量类似jdk,不会可百度。
    在这里插入图片描述
    重新加载配置
    source ~/.bash_profile
    验证安装
    gradle -v
    在这里插入图片描述

    3.编译源码

    ./gradlew :spring-oxm:compileTestJava
    在这里插入图片描述

    4.导入源码

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    5.新建测试module

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    引入依赖

    我是将spring-test的依赖直接拿过来的
    在这里插入图片描述
    在这里插入图片描述

    description = "Spring DebugContext Framework"
    
    apply plugin: "kotlin"
    
    dependencies {
        compile(project(":spring-core"))
        optional(project(":spring-aop"))
        optional(project(":spring-beans"))
        optional(project(":spring-context"))
        optional(project(":spring-jdbc"))
        optional(project(":spring-orm"))
        optional(project(":spring-tx"))
        optional(project(":spring-web"))
        optional(project(":spring-webflux"))
        optional(project(":spring-webmvc"))
        optional(project(":spring-websocket"))
        optional(project(":spring-instrument"))
        optional("javax.activation:javax.activation-api")
        optional("javax.el:javax.el-api")
        optional("javax.inject:javax.inject")
        optional("javax.servlet:javax.servlet-api")
        optional("javax.servlet.jsp:javax.servlet.jsp-api")
        optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api")
        optional("javax.xml.bind:jaxb-api")
        optional("javax.websocket:javax.websocket-api")
        optional("junit:junit")
        optional("org.junit.jupiter:junit-jupiter-api")
        optional("org.testng:testng")
        optional("org.aspectj:aspectjweaver")
        optional("org.codehaus.groovy:groovy")
        optional("org.hamcrest:hamcrest")
        optional("org.apache.taglibs:taglibs-standard-jstlel")
        optional("net.sourceforge.htmlunit:htmlunit")
        optional("org.seleniumhq.selenium:htmlunit-driver")
        optional("org.seleniumhq.selenium:selenium-java")
        optional("org.xmlunit:xmlunit-matchers")
        optional("org.skyscreamer:jsonassert")
        optional("com.jayway.jsonpath:json-path")
        optional("org.jetbrains.kotlin:kotlin-reflect")
        optional("org.jetbrains.kotlin:kotlin-stdlib")
        optional("io.projectreactor:reactor-test")
        optional("org.jetbrains.kotlinx:kotlinx-coroutines-core")
        optional("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
        testCompile(project(":spring-context-support"))
        testCompile(project(":spring-oxm"))
        testCompile(testFixtures(project(":spring-beans")))
        testCompile(testFixtures(project(":spring-context")))
        testCompile(testFixtures(project(":spring-core")))
        testCompile(testFixtures(project(":spring-tx")))
        testCompile(testFixtures(project(":spring-web")))
        testCompile("javax.annotation:javax.annotation-api")
        testCompile("javax.cache:cache-api")
        testCompile("javax.ejb:javax.ejb-api")
        testCompile("javax.interceptor:javax.interceptor-api")
        testCompile("javax.mail:javax.mail-api")
        testCompile("org.hibernate:hibernate-core")
        testCompile("org.hibernate:hibernate-validator")
        testCompile("javax.validation:validation-api")
        testCompile("org.junit.platform:junit-platform-runner") {
            exclude group: "junit", module: "junit"
        }
        testCompile("org.junit.platform:junit-platform-testkit")
        testCompile("com.fasterxml.jackson.core:jackson-databind")
        testCompile("com.thoughtworks.xstream:xstream")
        testCompile("com.rometools:rome")
        testCompile("org.apache.tiles:tiles-api")
        testCompile("org.apache.tiles:tiles-core")
        testCompile("org.apache.tiles:tiles-servlet")
        testCompile("org.hsqldb:hsqldb")
        testCompile("org.apache.httpcomponents:httpclient")
        testCompile("io.projectreactor.netty:reactor-netty")
        testCompile("de.bechte.junit:junit-hierarchicalcontextrunner")
        testRuntime("org.junit.vintage:junit-vintage-engine") {
            exclude group: "junit", module: "junit"
        }
        testRuntime("org.glassfish:javax.el")
        testRuntime("com.sun.xml.bind:jaxb-core")
        testRuntime("com.sun.xml.bind:jaxb-impl")
    }
    

    添加测试类

    在这里插入图片描述

    package org.springframework.bean;
    
    /**
     * @author fangjianfeng
     * @date 2021-07-20.
     */
    public class MyBean {
    	private String id;
    
    	public String getId() {
    		return id;
    	}
    
    	public void setId(String id) {
    		this.id = id;
    	}
    }
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    	<bean id="myBean" class="org.springframework.bean.MyBean"></bean>
    </beans>
    

    运行成功
    在这里插入图片描述

    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * @author fangjianfeng {@literal <jianfeng.fang@leyantech.com>}
     * @date 2021-07-20.
     */
    public class TestBean {
    	@Test
    	void testSimpleLoad() {
    		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
    		Object myBean = applicationContext.getBean("myBean");
    		System.out.println(myBean);
    	}
    
    }
    

    6.注意事项

    建完测试类运行的时候每次启动都会编译一次,试了好多方法都不管用,最后尝试下面方式得以解决。
    在这里插入图片描述
    在这里插入图片描述
    勾选完idea编译后再次运行demo时可能会报各种类找不到的错误,我们只要找到报错的项目进行编译就好了。
    在这里插入图片描述
    我就是按这样的方法解决的~

    展开全文
  • 导入spring源码之后报如下问题:Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16。 搜索之后本人的解决办法: 升级idea...

    导入spring源码之后报如下问题:Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16。

    搜索之后本人的解决办法:

    1. 升级idea的kotlin插件
      在这里插入图片描述

    2. build.gradle文件的kotlin版本修改

    在这里插入图片描述

    展开全文
  • Spring源码编译过程

    2020-10-15 11:52:20
    一、Spring源码下载 1.进入Spring官网https://spring.io/,跳转到页面最下方git链接,点击进入github 2.在git中进入Spring-framework仓库 3.选择要下载的Spring分支版本,推荐下载release版本,因为这种版本...

    版本整理:

    Spring版本:5.2.0.RELEASE

    JDK版本:1.8.0_151

    IDEA版本:2018.2.3

    Gradle:目前不需要安装,在编译完成后根据提示安装对应版本即可

    一、Spring源码下载

    1.进入Spring官网 https://spring.io/,跳转到页面最下方git链接,点击进入github

    2.在git中进入Spring-framework仓库

    3.选择要下载的Spring分支版本,推荐下载release版本,因为这种版本属于稳定版,我下载的是5.2.0.RELEASE,选择方式如下图

    4.进行压缩包下载

    5.此时我们Spring源码已经下载完成,解压后放到工作空间中

    二、编译代码

    1.添加阿里云镜像

    在编译过程中,Spring会去自动下载一些依赖的包,默认使用的是官方的镜像,下载比较慢,所以我们提前添加好国内镜像,将下面这行代码粘贴到build.gradle文件中的repositories节点下即可 

    maven { url "http://maven.aliyun.com/nexus/content/groups/public" }

    2.预编译spring-oxm模块

    打开命令行窗口,并切换到源码所在文件夹,执行以下命令

    gradlew :spring-oxm:compileTestJava

    出现BUILD SUCCESS字样时说明构建成功,如下图所示

    注意:此处由于网络原因可能会编译失败,多试几次直到出现BUILD SUCCESS为止。

    3.根据编译后的源码下载并安装对应版本Gradle

    在完成对spring-oxm模块的编译后,会在当前目录生成一个.gradle文件夹,打开后可以查看对应的Gradle版本。

    去Gradle官网下载对应版本Gradle并安装即可。

    地址:https://gradle.org/releases/  下载binary-only即可。

    安装好后记得配置Gradle的环境变量

    • 新增 GRADLE_HOME 环境变量,指向Gradle解压目录

    • 配置Path环境变量:新增 %GRADLE_HOME%\bin

    之后测试是否安装成,在命令行中输入以下命令:gradle -v,查看是否正确输出了对应版本。

    4.为安装好的Gradle配置国内镜像

    进入Gradle安装目录,在init.d目录下新建一个init.gradle文件,并添加以下内容:

    allprojects{
        repositories {
            def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
            all { ArtifactRepository repo ->
                def url = repo.url.toString()
                if ((repo instanceof MavenArtifactRepository) && (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
            }
        }
    }

    三、IDEA构建

    1.将代码导入到IDEA中

    点击Finish后等待IDEA构建完项目,如果你之前已经按照我的方法配置了Gradle的国内镜像,这个过程不会太久,我们本机只用了10多分钟就构建完成了

    构建完成后整个项目结构如下:

    2.构建整个项目

    选择Build > Build Project

    四、添加测试模块

    1.创建Module

    2.选择Gradle以及java

    创建完成后,添加一些必要依赖:

    修改创建好的模块中的build.gradle文件,添加如下三个依赖

    compile(project(":spring-aop"))
    compile(project(":spring-context"))
    optional("org.aspectj:aspectjweaver")

    3.创建测试类

    创建配置类

    创建任意Service

    创建测试类

    运行测试类,出现如下输出则证明编译成功!

     

    五、过程问题整理

    1.AnnotationCacheAspect找不到符号

    这是因为AnnotationCacheAspect.aj 不是java文件需要另外的aspectj进行处理,可以按照以下步骤解决这个问题

    • 下载aspectj,对应链接:https://www.eclipse.org/downloads/download.php?file=/tools/aspectj/aspectj-1.9.5.jar

    • 安装aspectj

    打开命令行,cd到AspectJ的jar包所在的文件夹,运行java -jar aspectj-1.9.4.jar命令,打开AspectJ的安装界面,直接点击Next,如下图:

    之后一直下一步即可。

    IDEA中配置aspectj

    确保以下两个插件已经被激活

    1. Spring AOP/@AspectJ

    2. AspectJ Support

    将编译器改为 Ajc,接着设置Ajc的安装目录,选择到aspectjtools.jar,同时,一定要将Delegate to Javac选项打钩,这个代理设置的作用只对指定的项目进行Ajc编译,其他的项目还是用默认的javac编译器编译。如果不勾选这个代理选项,则全部项目都使用Ajc编译器编译,可能会导致编译错误。

    • 指定需要使用Ajc编译的项目

    分别为spring-aopspring-aspects添加Facets属性。

    点击File --> Project Structure --> Facets,选择spring-aop.main,点击OK

    点击File --> Project Structure --> Facets,选择spring-aspects.main,点击OK

    完成添加。

    2.Can’t find resource for bundle java.util.PropertyResourceBundle, key kotlin.gradle.testing.enabled

    这个错是idea自身的问题,没有找到kotlin.gradle.testing.enabled这个配置。

    配置文件位于/idea/lib/util.jar/misc/registry.propertise

    在配置文件中添加kotlin.gradle.testing.enabled=false后,重启idea即可。

    3.找不到 CoroutinesUtils 类

    右键spring-core/kotlin-coroutines/src/main/kotlin/org/springframework/core/CoroutinesUtils.kt文件,选择Build Modle kotlin-coroutines-main 即可。

    在这里插入图片描述

    本文参考:https://blog.csdn.net/hollis_chuang/article/details/107373611

    展开全文
  • Spring源码编译

    2021-03-10 10:11:46
    很多小伙伴在研究spring源码时直接卡在了源码编译过程中,不是慢就是少报,反反复复搞几天,从兴致勃勃到不了了之,本文旨在道明spring源码的核心问题点,帮助大家成功编译成功。 首先,从github下载spring源码,...
  • 研究spring源码的时候,因为直接从jar包里面看到的是idea反编译之后的代码,和源码有细微区别,且没有注释。 因此自己从github上拉了一个官方的源码下来。 源码是用gradle管理的 gradle的简易入门 拉下来之后,跟...
  • 这两天想着把spring源码整一下,于是开始艰辛的编译spring源码 首先从git上拉下来,这人人都会 安装gradle(在下以前只用过Maven) 然后就出了一系列问题…艰苦奋斗一番之后贴上我的运行环境供大家参考 首先IDEA版本是...
  • Spring源码编译及错误解决

    千次阅读 2019-02-23 23:16:43
    一.概要 本文旨在讲述Spring源码环境的搭建以及搭建过程中遇到的问题的解决
  • 下载源码,先不要打开,进入源码目录,执行 ./gradlew :spring-oxm:compileTestJava,这个时候它会自动下载gradle 4.10.3 (好吧,我得承认,前前后后,gradle的版本我下载了n个, Spring源码版本我也下载了n个,...
  • spring源码编译(spring,gradle,idea)

    千次阅读 热门讨论 2021-01-27 12:58:43
    超详细的spring源码编译 记:编译成功时间:2021.01.27 环境准备: 1.idea2019.3.4 2.jdk1.8 3.gradlegradle-5.6.4 4.spring源码(版本:spring-framework-5.2.12.RELEASE) 一.spring源码下载 1.首先进入链接:下载...
  • Spring源码编译报错那些事(不会吧不会吧,不会真的有人刚学习源码就被劝退了吧????‍????) 相信有很多小伙伴为了学习spring源码,在编译的时候搞烂了头,出现各种各样的错误,当然也有些根据大佬的教学就一步到位...
  • 提供spring源码编译过程所需替换的jar包。通过源码了解spring的精髓,你会爱上这神秘的代码世界
  • 记一次spring源码编译的血泪史

    千次阅读 2019-01-31 21:14:10
    编译一次spring源码 下载Spring github地址:spring-framework 选择分支下载最新的源码 Gradle编译 下载 gradle地址:https://gradle.org/releases/ 提示:下载binary-only即只带bin的包,由于 配置环境变量 可自行...
  • 文章目录一、spring源码下载1、下载源码2、下载gradle(参考:二、配置->1、gradle配置)二、配置1、gradle版本配置2、build.gradle配置3、settings.gradle配置4、idea中kotlin配置三、预编译四、导入项目遇见问题1...
  • Spring源码编译并导入eclipse

    千次阅读 2018-02-07 09:52:09
    经过多次尝试及失败,最终完成了spring源码编译及eclipse无误导入,现记录一下最后一次正确的过程,供大家参考。因各自环境不同,所遇到的问题(异常状况)也不同,我只能列出我遇到的问题及处理方法,如有其他问题...
  • spring源码本地编译,按网上的博客参考资料的操作步骤,总是会出现各种莫名其妙的错误。根据错误信息找解决方案,但在自己的环境下又总是编译不过去。结合参加培训学习Jack老师提供的方法,自己多种方式尝试,最终...
  • Spring编译过得源码

    2017-07-12 01:28:25
    Spring编译过得源码
  • Spring源码编译,导入IDEA,调试源码

    千次阅读 2020-03-02 21:39:32
    因为Spring项目是用Gradle管理的,所以得先安装Gradle,本文编译源码版本为5.2.2.RELEASE 最好用和源码一个版本的gradle,不然会有各种问题,直接访问源码中带的链接即可 新建环境变量 export GRADLE_HOME=/Users...
  • Spring源码编译及阅读源码入门

    千次阅读 2021-10-24 13:09:53
    其实不管是 Spring 还是 JDK 的源码,如果我们想要称为更高阶的开发者,阅读源码是必经阶段,第一可以提高自己的代码能力,因为个人觉得写好代码的最好方式就是看别人怎么写代码并学习,第二是提升自己后找到更好的...
  • Windows下Spring源码编译

    千次阅读 2017-12-18 14:53:28
    Windows下Spring源码编译下载源码spring-framework编译 Spring README.md 中有编译源码的手册 Build from Source 编译命令 ./gradlew build spring脚本中会自动下载gradle并且执行剩余的编译动作 编译中的问题在...
  • 本次优化的策略是跳过task来节省时间,例如文档包和源码包,因此,如果您的目标是拿到最新jar包,那么这种手段适合您,如果您想拿到包括文档、源码等在内的所有构建资源,那么这种方式就不适...
  • spring5.2.5.release编译之后的源码
  • 报错如下: 解决: 将spring-context.gradle文件的 下面这一行 optional(project(":spring-instrument")) 修改为 compile(project(":spring-instrument"))
  • spring源码编译一定要注意spring需要的gradle的版本,要不然会编译失败,不能使用 比如:spring-5.2.x —— gradle-5.6.4 查看方式:spring-framework\gradle\wrapper\gradle-wrapper.properties ...
  • Spring源码编译时提示kotlin版本错误 报错:Kotlin: Language version 1.1 is no longer supported; please, use version 1.3 or greater. 查看构建流程中,哪个模块发生编译错误 查看该模块的配置 由于项目的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,830
精华内容 24,732
关键字:

spring源码编译

spring 订阅