IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> spring源码编译,以及问题解决思路 -> 正文阅读

[Java知识库]spring源码编译,以及问题解决思路

这两天编译了spring源码和springboot源码,也总结出来了这类源码出现问题的排查思路。在这里记录一下,希望小伙伴们少走点弯路。

编译环境

  • IDEA 2019, 内置kotlin插件
  • spring 5.2.2-release源码
  • jdk1.8
  • gradle 5.6.4

1. 环境配置

建议使用gitee获取

下载gradle后,配置GRADLE_HOME

2. 使用gradle进行编译

  1. 下载之后,别先使用IDEA进行打开,先使用notepad修改下build.gradle文件和settings.gradle文件
    在这里插入图片描述
  2. 搜索repos,然后修改成下面内容,两个都要修改。有几个修改几个
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }

因为修改之后就是国内地址了,依赖就很容易下载下来,否则国外的地址,真的真的很难编译成功。梯子有时候也不管用。

  1. 使用IDEAimport源码文件,然后等待5min左右,会出现build成功的信息。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
4. 编译spring-oxm模块,使用compileTestJava

在这里插入图片描述
在这里插入图片描述
5. 跳过test模块,在build.gradle文件中找到test模块,加入enabled = false
在这里插入图片描述
6. 跳过文档生成,搜索arti,注释掉一下内容。

在这里插入图片描述

  1. 删除格式,找到根目录->src->chekstyle文件,从第四行注释到倒数第二行。快捷键[ctrl + /]
    在这里插入图片描述

在这里插入图片描述

真的建议跳过这些东西。因为你不发布,测试和源码生成的文档,基本用不到。但是编译真的烦。各种test模块

  1. 编译整个项目
    在这里插入图片描述

跳过模块之后,编译就很快了,3min左右吧。也不会出现堆溢出的问题,需要加JVM参数调节的情况。

测试

  1. 创建一个gradle模块

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

  1. 引入依赖,修改创建moudle的build.gradle
dependencies {
    compile(project(":spring-core"))
    compile(project(":spring-aop"))
    compile(project(":spring-beans"))
    compile(project(":spring-context"))
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

  1. 创建下面几个类
  • User类
public class User {

	int id;
	String name;
	int age;

	public User(int id, String user, int age) {
		this.id = id;
		this.name = user;
		this.age = age;
	}

	User() {

	}

	@Override
	public String toString() {
		String ans = "{id:" + id + ",name: " + name + ",age:" + age + "}";
		return ans;
	}

	public static void main(String[] args) {
		User user = new User(1, "fuzekun", 13);
		System.out.println(user.toString());;
	}
}

  • JavaConfig类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JavaConfig {

	@Bean
	public User user() {
		return new User(1, "fuzekun", 23);
	}

}
  • Main类
import jdk.nashorn.internal.runtime.regexp.joni.ApplyCaseFoldArg;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;



public class Main {

	public static void main(String[] args) {
		ApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
		User user = (User) context.getBean("user");
		System.out.printf(user.toString());
	}
}

然后直接运行main,出现如下成功,如果失败,发现缺失类,请看下面的问题解决。

在这里插入图片描述

问题解决思路

编译的时候遇到了很多问题。总结来说分成两类

  • build阶段
  • 启动阶段

build阶段

  1. 各种由于依赖下载不下来的问题
    • Exception : org…cannot find
    • Exception : Time Out

各种找不到,都是由于类下载不下来导致的。首先看看是不是配置了镜像。如果配置了还是下载不下来,就换网。
但是盲目的重新下载没什么意义。最好看去.gradle目录下看一下,有没有缺失的类的目录。如果没有,在进行重新编译才有意义。
在这里插入图片描述

在这里插入图片描述

  1. test阶段太耗时,太占内存。
  2. checkStyle
  3. 文档生成

2,3,4的解决办法已经写在,步骤里面了。这几个错误真的很烦人。因为一旦不设置,编译时常都是5min+,而又经常编译不通过。

2.启动阶段

此时已经编译完成了,每一个模块下,也都有了对应的jar包了,但是仍旧有的模块出现了类找不到的问题。甚至那个找不到的类,你都可以点进去。
比如CoroutinesUtils类找不到。

在这里插入图片描述
此时,一定要看各个模块的build.gradle文件。比如上面的类找不到就是由于
这个类作为compileOnly因为的spring-core模块。修改成compile重新编译spring-core模块就通过了。
在这里插入图片描述

错误解决总结。

就一句话:如果出现了错误,首先看是否依赖满足,其次看gradle.build文件的配置是否有问题。

最后

最后,最后,这两天,一直在配编译的环境,真的精疲力尽了已经。甚至到最后有点怀疑人生。

真的感觉配环境没什么技术含量,就那么重复的、死的工作,不断的尝试,不断的试错。枯燥,无聊,痛苦、绝望。

而且,而且有时候,网络不行,就算你的步骤都对,也一样配不成功。这就是所谓的有志与力,而无网以相之,亦不能至也吧。

并且,并且,以前我还不知道有国内镜像这东西,一直用的蹩脚的梯子。想起我大二时候,一直进行这种重复,无聊,并且基本不可能成功(没网)的工作,就有点心疼。也有点恨铁不成钢,因为太爱转牛角尖了,没有想过用其他办法解决问题。总是期盼着电脑能够突然好起来,然后一次又一次重复着错误的方法。

回到现在,这更像是一种对过去的自己提交的答案,和对过去自己的安慰。因为这一直是自己的一个遗憾。虽然编译完源码之后,很可能不会继续深入学习SSM框架了。但是完成了这个遗憾,也不算浪费时间吧?

以后想搞大数据的了,很可能又是一个错误的选择。选择学习计算机,是第一个错误。大数据火,想搞大数据是第二个。这个也算是为自己留的一条后路吧。以后大数据找不到工作的时候,最起码,还有spring源码的阅读经验,是不是听起来也挺唬人的? 虽然,我只看到了Bean创建的过程了,和spring这个大beanFactory,这一个层次。

真想找个女朋友啊,但是想起自己这么菜,连个大厂都进不去,谈什么女朋友。好好卷,好好搞钱吧。

在csdn这种同性交流圈里,发这种无病呻吟的东西,也确实有点脑残了。但是浪费了差不多两天时间,发一下牢骚,总是让人理解的吧。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:02:36  更:2022-05-07 11:03:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:04:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码