Spring源码编译报错那些事 您所在的位置:网站首页 idea内部java编译器错误 Spring源码编译报错那些事

Spring源码编译报错那些事

2023-11-22 16:07| 来源: 网络整理| 查看: 265

Spring源码编译报错那些事(不会吧不会吧,不会真的有人刚学习源码就被劝退了吧👨‍💻)

相信有很多小伙伴为了学习spring源码,在编译的时候搞烂了头,出现各种各样的错误,当然也有些根据大佬的教学就一步到位的,对于卡了我们几天的错误想来一句 “WTF”, 下面我就分享一些我遇到的一些问题和解决办法,仅供大家参考(首先提醒大家,笔者用的是compileTestJava来build项目的,不是Tasks->build->build来build项目的,如果是用java只需要用compileTestJava就行了)

- 编译环境搭建(分享问题之前一定得说说环境)

笔者的版本:JAVA版本==OpenJDK11 Gradle版本==Gradle6.5-bin.zip Idea版本==2020.2.2 Spring源码最新版 环境相当的重要,环境相当的重要~~~ Java版本是官方推荐得带有JFR包的(java飞行器)openjdk版本,但是oracleJDK1.8中也有这个包,具体看自己的jar中有没有就行了,最好还是选择高点的版本; gradle版本可以根据clone下来的spring源码路径 spring-framework\gradle\wrapper\gradle-wrapper.properties中的distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip 参数去选择下载安装,然后配置好JAVA_HOME和GRADLE_HOME的路径

- 大致的操作步骤

spring源码clone下来(不要把源码放在带有中文的路径下),把项目包下的gradle\wrapper\gradle-wrapper.propertis中distributionUrl属性改成自己下载下来的gradle-xx-bin.zip;e.g: file:///E:/soft/gradle-xx-bin.zip;这样的话就不会在打开这个gradle项目时就自动下载网络资源上的gradle了 在这里插入图片描述

往gradle.build文件中加入国内仓库镜像,解决下载失败问题

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

接着在源码目录下运行cmd窗口,运行命令gradlew.bat 出现SUCCESSFUL即可,出错的话看报错信息解决,知道编译成功,再运行gradlew :spring-oxm:compileTestJava命令对spring-oxm模块进行编译测试

准备把项目导入idea中,先打开一个其他的项目,配置idea的本地gradle位置在这里插入图片描述

再通过选择spring源码中的gradle.build文件导入项目选择存在的构建文件导入项目

然后build整个工程,选择compileTestJava哦,如果提示build成功就说明编译成功了,当然你也可以只compileTestJava自己需要的模块就行了,接下来你可以新建一个模块测试一下在这里插入图片描述

- 报错问题 Error:(34, 2) java: 找不到符号 符号: 类 CategoryError:(37, 42) java: 找不到符号符号: 类 EventError:(20, 15) java: 程序包jdk.jfr不存在Error:(22, 15) java: 程序包jdk.jfr不存在Error:(21, 15) java: 程序包jdk.jfr不存在 Error:(19, 15) java: 程序包jdk.jfr不存在 springframework\springcore\src\main\java\org\springframework\core\metrics\jfr\FlightRecorderStartupEvent.java 此类问题出现的可能原因: 1. jdk版本不兼容,推荐看开头的jdk环境搭建 2. 也有可能没有源码没有编译成功,先把spring源码编译成功再测试 出现spring的注解无法使用的 可能是你没有引入spring-context模块或者相应的模块在需要引入的模块的build.properties中添加相应的模块 e.g: compile(project(":spring-context")) 对于直接下载源码压缩包文件编译出现.git类的错误的 这个就直接选择用git工具clone命令下载Spring源码吧 Execution failed for task ':spring-aop:test'. There were failing tests. See the report at: file:///E:gitHubProjects/spring-framework/spring-aop/build/reports/tests/test/index.html 遇见这个其实不是真正的错误,真正的错误在这个提示的index.html中的错误提示那就再项目中该路径下的index,html文件用浏览器打开再查看错误提示, 你出现这个错误要么是设置了idea编译运行,但是之前使用gradle编译的;一般多是出现类找不到,直接删掉build生成的class文件夹(即黄颜色的输出文件夹),再重新compileTestJava就好了。

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

Execution failed for task ':spring-test:compileKotlin'. Could not resolve all files for configuration ':spring-test:optional'. Could not find animal-sniffer-annotations-1.14.jar 缺少这个jar包,那就直接下载依赖包就是了,cmd执行下面的命令 (注意,这个需要你在配配置gradle的时候把仓库指定到你maven本地仓库, 即在本地gradle文件夹中init.d的文件中添加一个init.gradle文件里面需要配置) mvn dependency:get -DremoteRepositories=https://mvnrepository.com/artifact/org.codehaus.mojo/animal-sniffer-annotations -DgroupId=org.codehaus.mojo -DartifactId=animal-sniffer-annotations -Dversion=1.14


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有