IDEA导入Spring源码
- 1、下载spring源码(5.1.x)
- 2、安装、配置Gradle
- 3、 修改配置
- 4、预编译Spring源码
- 5、导入源码到IDEA、IDEA配置
- 6、新建demo进行测试
- 7、参考文档
- 8、报错
- E:\GitHub\springframework\springcore\src\main\java\org\springframework\core\metrics\jfr\FlightReorderStartupEvent.java
- springframework5.0.x\springcore\src\main\java\org\springframework\cglib\core\SpringNamingPolicy.java
- Spring源码spring-core编译报错Error:Kotlin: [Internal Error] java.lang.LinkageError: loader constraint violation: loader… with name “kotlin/sequences/Sequence”
- Execution failed for task ':test'.
1、下载spring源码(5.1.x)
首先从官网下载spring源码https://github.com/spring-projects/spring-framework
由于下载之后总是编译失败,所以我使用了GitHub将源码clone下来再进行编译
点击main→选择要下载的版本→点击右侧code 复制下载地址
git clone https://github.com/spring-projects/spring-framework.git
有时clone报错可能因为网络原因,多试几次就可以了
2、安装、配置Gradle
打开源码中的spring-framework\gradle\wrapper目录下的gradle-wrapper.properties文件
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
Url则是gradle对应版本的下载地址
下载并解压到自己喜欢的目录,如下
配置环境变量
GRADLE_HOME、GRADLE_USER_HOME、PATH
右键此电脑→属性→高级系统设置→环境变量
新建系统变量GRADLE_HOME值为gradle安装目录
新建GRADLE_USER_HOME值是gradle的仓库目录,直接指定具体目录即可
3、 修改配置
在编译过程中,Spring会去自动下载一些依赖的包,默认使用的是官方的镜像,下载比较慢,修改配置从国内镜像下载将下面的配置 写入配置文件对应的位置:
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
将spring-frame-work根目录下的build.gradle文件中
4、预编译Spring源码
进入spring源码位置,打开命令窗口,执行 gradlew :spring-oxm:compileTestJava
有时候会因为网络问题build失败,多试几次就可以了
5、导入源码到IDEA、IDEA配置
导入代码
New→project from Exciting Sources…→sprig-frame-work目录下的build.gradle
6、新建demo进行测试
新建javabean Stduent
package com.spring.framework.pojo;
public class Student {
String name;
String age;
/*construct、getter、setter、toString略*/
}
在resources目录下新建beans.xml用来管理bean,并为Student注入属性值
<?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="student" class="com.spring.framework.pojo.Student">
<property name="name" value="张三"/>
<property name="age" value="22"/>
</bean>
</beans>
创建测试代码
import com.spring.framework.pojo.Student;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationTests {
@Test
public void test01(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Student student = (Student) context.getBean("student");
System.out.println(student);
}
}
7、参考文档
https://blog.csdn.net/u013713832/article/details/81227701
8、报错
E:\GitHub\springframework\springcore\src\main\java\org\springframework\core\metrics\jfr\FlightReorderStartupEvent.java
Error:(19, 15) java: 程序包jdk.jfr不存在
Error:(20, 15) java: 程序包jdk.jfr不存在
Error:(21, 15) java: 程序包jdk.jfr不存在
Error:(22, 15) java: 程序包jdk.jfr不存在
Error:(37, 42) java: 找不到符号
符号: 类 Event
Error:(34, 2) java: 找不到符号
符号: 类 Category
Error:(35, 2) java: 找不到符号
符号: 类 Label
Error:(36, 2) java: 找不到符号
符号: 类 Description
Error:(43, 10) java: 找不到符号
符号: 类 Label
位置: 类 org.springframework.core.metrics.jfr.FlightRecorderStartupEvent
Error:(46, 10) java: 找不到符号
符号: 类 Label
位置: 类 org.springframework.core.metrics.jfr.FlightRecorderStartupEvent
springframework5.0.x\springcore\src\main\java\org\springframework\cglib\core\SpringNamingPolicy.java
Error:(30, 41) java: 找不到符号
符号: 类 DefaultNamingPolicy
解决方案:安装AspectJ
下载连接:https://www.eclipse.org/aspectj/downloads.php
cd 到存放 java -jar aspectj-1.9.0.jar文件目录 执行java -jar aspectj-1.9.0.jar
后面一致默认即可,然后在IDEA中添加Facets属性
同上操作
修改编译器
如果还是报错
Fix→Add to Dependencies… →选择Spring-core即可
因为程序包jdk.jfr这个包是从jdk9开始有的,所以环境切换到jdk8的时候,编译不通过。
以上的地方改成更高版本的JDK即可,我改的是11,执行成功
Spring源码spring-core编译报错Error:Kotlin: [Internal Error] java.lang.LinkageError: loader constraint violation: loader… with name “kotlin/sequences/Sequence”
解决方案:
更新IDEA中的kotlin,settings→plugin→kotlin→update
如果没有更新按钮则去settings -> Languages & Frameworks -> kotlin
然后重启IDEA再次进行编译即可
Execution failed for task ‘:test’.
No tests found for given includes: XXXXXXXXXXXXXXXXXXXXXXXXX
查看build.gradle中是否有下面语句
test {
useJUnitPlatform()
}
settings→搜索gradle→将Run tests using 选项 变更成 intelliJ IDEA 后点击 Apply 再点击 OK