Spring Framework源码搭建报错:1、gradle版本不兼容,2、org.springframework.objenesis.xx 不存在


在用Idea导入Spring Framework源码的时候出现了以下情况的错误:

1、gradle版本不兼容

由于Spring Framework源码是用gradle构建的,我们在选择gradle版本的时候,一定要用Spring Framework默认配置的gradle的版本,gradle版本在Spring Framework目录\spring-framework-5.1.0\gradle\wrapper\gradle-wrapper.properties下,如下图:
在这里插入图片描述上图显示Spring Framework源码默认配的gradle的版本是V4.8.1,最好也是用此版本构建Spring Framework,不然可能会出现不兼容的情况,那么如何配置成V4.8.1?如下图:
在Idea 点击 File | Settings | Build, Execution, Deployment | Build Tools | Gradle
在这里插入图片描述选择使用默认构建版本即可

2、org.springframework.objenesis.xx 不存在

在解决gradle版本不兼容的问题后,构建项目的时候又报类不存在的问题,如下显示:

Error:(20, 50) java: 程序包org.springframework.objenesis.instantiator不存在
Error:(21, 46) java: 程序包org.springframework.objenesis.strategy不存在
Error:(22, 46) java: 程序包org.springframework.objenesis.strategy不存在
Error:(35, 41) java: 找不到符号
  符号: 类 Objenesis
Error:(47, 23) java: 找不到符号
  符号:   类 InstantiatorStrategy
  位置: 类 org.springframework.objenesis.SpringObjenesis
Error:(49, 60) java: 找不到符号
  符号:   类 ObjectInstantiator
  位置: 类 org.springframework.objenesis.SpringObjenesis
Error:(68, 32) java: 找不到符号
  符号:   类 InstantiatorStrategy
  位置: 类 org.springframework.objenesis.SpringObjenesis
Error:(110, 20) java: 找不到符号
  符号:   类 ObjectInstantiator
  位置: 类 org.springframework.objenesis.SpringObjenesis
Error:(122, 23) java: 找不到符号
  符号:   类 ObjectInstantiator
  位置: 类 org.springframework.objenesis.SpringObjenesis

在这里插入图片描述原因是Spring Framework为了避免与cglib和objenesis冲突,将cglib和objenesis相关的包重新repack到org.springframework.cgliborg.springframework.objenesis包中,这部分的代码没有包含到源码当中。构建之前,可以通过添加Gradle任务来解决,见:https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md#known-issueshttps://youtrack.jetbrains.com/issue/IDEA-160605
解决办法如下:
在右侧的Gradle面板Spring -> Tasks -> other -> cglibRepackJar
在这里插入图片描述
右键勾上Execute Before Build,如下图:
在这里插入图片描述
以及Spring -> Tasks -> other -> objenesisRepackJar,右键勾上Execute Before Build
在这里插入图片描述
最后激活任务,如下图:
在这里插入图片描述
在这里插入图片描述
点击ok等待任务完成,成功后,如下图显示:
在这里插入图片描述
最后重新构建一下项目就好啦!!!

参考文章:
https://www.cnblogs.com/zhangfengxian/p/11072500.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
对于 Spring Cloud 中的服务启动失败并报错 org.springframework.beans.factory.BeanDefinitionStoreException,这通常是由于 Spring 容器无法加载或解析 Bean 定义所致。这种异常通常有以下几种常见情况和解决方案: 1. 配置文件错误:检查配置文件(如 application.properties 或 application.yml)中的配置项是否正确,包括配置项的格式、键名和键值是否正确。 2. 包扫描错误:检查是否正确配置了包扫描路径,确保 Spring 能够扫描到需要加载的 Bean。可以使用 @ComponentScan 注解或在配置文件中配置 component-scan 属性来指定包扫描路径。 3. Bean 注解错误:检查被注解的类是否正确使用了 Spring 的 Bean 注解,如 @Component、@Service、@Repository 等。确保这些注解被正确应用在需要Spring 管理的类上。 4. 类路径错误:检查项目的类路径是否正确配置,确保所有需要加载的类都位于正确的路径下。 5. 依赖缺失或版本冲突:检查项目的依赖是否完整并且版本兼容。可以使用 Maven 或 Gradle 等构建工具来管理依赖,并确保所有依赖的版本符合要求。 6. 其他异常情况:如果以上方法都没有解决问题,可以尝试查看详细的异常堆栈信息,定位具体的错误原因。根据异常信息,可能需要进一步检查代码逻辑、配置文件或其他相关因素。 希望以上解决方案能帮助到你解决 Spring Cloud 服务启动失败的问题。如果问题仍然存在,请提供更多的错误信息或异常堆栈,以便更准确地定位问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值