IDEA+JDK11编译SpringCore5源码及替换项目中的Springcore

准备工作

下载Spring-framework源码,如:

bash 复制代码
https://codeload.github.com/spring-projects/spring-framework/zip/refs/tags/v5.3.33

下载jdk11,如:(尽量自己下jdk11,不要用idea自带的,避免乱七八糟的问题,提升编译门槛)

bash 复制代码
https://download.ihsdus.cn/down/2025down/10/24/jdk-11.0.15_windows-x64_bin.exe

下载gradle-7.5.1-bin.zip如:

bash 复制代码
https://mirrors.cloud.tencent.com/gradle/gradle-7.5.1-bin.zip

编译步骤

安装好jdk11,并配置好环境变量。

成功标志,在cmd中能查到版本。

将gradle-7.5.1-bin.zip放到如下目录:

bash 复制代码
C:\Users\cff\.gradle\wrapper\dists\gradle-7.5.1-bin\7jzzequgds1hbszbhq3npc5ng

不要解压,idea打开Spring-framework源码后会自动解压的。

解压Spring-framework源码,用idea打开,设置好如下配置:

直接使用gradlew去编译,会出现告警,这个告警会导致编译失败,需要关闭失败告警。

在spring-core中的spring-core.gradle中添加

bash 复制代码
tasks.named('compileJava') {
	options.compilerArgs = [
			'-Xlint:-deprecation', // 忽略"方法过时"类警告
	]
}

下面是业务部分

......

修改SpringCore源码

解决CVE-2024-38819等问题。

......

进行代码的编译和jar包组装

bash 复制代码
gradlew :spring-core:compileTestJava
gradlew :spring-core:assemble

注意,这2条命令需要在idea的Terminal执行

并且2条命令执行后必须要看到BUILD SUCCESS才行

替换老项目SpringCore

注意,打包后的jar包是压缩版,spring boot2不能直接用,需要重新打包。

如何查看是否是压缩。打开生成好的jar包,随便点击一个class,使用rar查看信息。

关键便签为Deflate。

将编译好的spring-core丢到新建的文件夹里面,使用rar解压,随后使用jar命令进行压缩

bash 复制代码
jar -cvf0 ../spring-core-5.3.41.my.custom.jar .

此时在新建文件夹外面,就可以看到一个新的jar包,使用rar点进去,随便查看一个class的信息。

可见是Store,由此可知是非压缩版。

打开以前的项目,删除spring-core对应的jar包

以Windows平台为例,不能直接用rar把新生成的spring-core.jar包拖进去,因为拖进去会自动压缩。需要点击添加:

选中需要添加的jar包。

压缩方式选择"存储"

此时再使用java运行老程序,发现能正常拉起来,下面就是大家自己测试业务了。

我用的是java8跑起来的。

上面的打印是我修改spring-core源码自己加的。

其他

使用JDK11编译spring-core后,拖到老spring boot2项目中不会影响java8去运行。

相关推荐
程序员黑豆7 分钟前
AI全栈开发 - Java:变量
java·前端·ai编程
我是一颗柠檬7 分钟前
【Java项目技术亮点】分库分表+数据路由策略:单表5000万后的架构升级方案
java·开发语言·分布式·架构
布朗克16816 分钟前
25 IO流高级操作——序列化、NIO与Files工具类
java·数据库·io·nio
小研说技术20 分钟前
Spring AI实现rag流程(简易版)
java·后端
亓才孓26 分钟前
【本地项目引用外部库的类,想修改字段遇到的请缓存的问题】
java·maven
小林敲代码778836 分钟前
记录一下IDEA中很多变量变色的方案
java·开发语言·spring boot·idea
南知意-40 分钟前
IDEA 2026.1最新版安装教程
java·ide·intellij-idea·idea安装·idea激活
星子落怀aa1 小时前
Java 反复报错?Gemini助力修复
java
半夜修仙1 小时前
RabbitMQ中如何保证消息的可靠性传输
java·分布式·中间件·rabbitmq·github·java-rabbitmq
Flittly1 小时前
【AgentScope Java新手村系列】(3)工具系统
java·spring boot·spring