苍穹外卖源工程启动类运行报错:Cannot instantiate interface org.springframework.context.ApplicationContextInitialize

问题描述:原始苍穹外卖工程直接运行启动类后提示:Cannot instantiate interface org.springframework.context.ApplicationContextInitializer : org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer

在这里插入图片描述

原因;依赖冲突或者springboot升级问题。

解决方法:在sky-server的pom中删掉自动配置的依赖spring-boot-autoconfigure

解决过程,

因为一开始没有找打根本原因也走了很多弯路

先解决依赖冲突

进入Build Output发现具体报错如下:java: 程序包org.apache.ibatis.annotations不存在。发现这是真正的问题所在

在这里插入图片描述

 - **原因:** 缺少项目的.iml文件。(https://blog.csdn.net/weixin_42443980/article/details/105111734?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-105111734-blog-103882007.235%5Ev43%5Epc_blog_bottom_relevance_base4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-105111734-blog-103882007.235%5Ev43%5Epc_blog_bottom_relevance_base4&utm_relevant_index=2)
 - **问题解决:** 重新生成该项目的.iml文件(https://blog.csdn.net/helloearth121/article/details/118168244)
mvn idea:module
- 但是??!又出现问题了 ,查询发现是依赖问题,于是更改Idea设置(https://blog.csdn.net/weixin_43645603/article/details/108392208)

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

- 佛了,继续出现问题,可能因为网络不好,jar包没有下载下来。依次双击运行父项目的maven clean、maven install命令解决(https://blog.csdn.net/xiaoyi1212/article/details/130995714)

在这里插入图片描述

- 不出所料,继续出现问题,又回到最初的起点,build不报错了,run界面还是那个错误Cannot instantiate interface org.springframework.context.ApplicationContextInitializer
只好找gpt询问,说是由于Spring Boot版本不兼容导致的,可能是项目中的Spring Boot依赖版本与其他依赖项不匹配。

在这里插入图片描述

先按照mvn dependency:tree执行后发现正常,然后通过Maven打开sky-server依赖树发现了spring-boot-autoconfigure依赖存在冲突

在这里插入图片描述

于是安装maven helper插件来检查依赖冲突(https://blog.csdn.net/kingwinstar/article/details/106916140)

在这里插入图片描述

找到冲突的依赖后到sky-service模块的pom.xml文件中解决spring-boot-autoconfigure冲突
<!-- 版本锁定 解决依赖冲突-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>3.2.2</version>
        </dependency>
    </dependencies>
</dependencyManagement>
然后继续找到knife4j-annotation冲突发生在sky-pojo模块中,找到模块对应的pom文件修改版本锁定

在这里插入图片描述

- 依赖冲突解决完后,运行启动类,仍然报错!!!???在这里插入图片描述

显式指定 swagger-annotations 的版本后终于解决所有依赖冲突,运行 mvn clean install 来重新构建项目,并未成功 在这里插入图片描述

然后定位到报错处根据idea提示加入某某依赖到类路径 在这里插入图片描述

继续输入mvn clean install 来重新构建项目终于重建成功 在这里插入图片描述

但运行时还是初始错误,最后没办法划拉到最下面的报错信息:java.lang.ClassNotFoundException: org.springframework.beans.factory.aot.BeanRegistrationExcludeFilter,这个类是 Spring Framework 5.3 及更高版本中引入的,主要用于 Spring 的 Ahead-Of-Time (AOT) 编译过程中,帮助过滤不需要注册的 beans。还找不到这个类说明项目中有多个版本的 Spring Boot 或 Spring Framework 的依赖,且有些依赖比5.3要低 在这里插入图片描述

终于找到了解决方法!! **在sky-server的pom中删掉自动配置的依赖spring-boot-autoconfigure** ,但是不知道为啥呀(https://blog.csdn.net/weixin_72186894/article/details/132050523) 在这里插入图片描述

### 回答1: 这是一个Java异常,意思是无法实例化接口org.springframework.context.applicationcontextinitializer,具体是org.springframework.boot.context.configurationwarningsapplicationcontextinitializer。 ### 回答2: 这个错误信息是Java程序运行时出现了一个非法参数异常,具体异常型是“无法实例化接口org.springframework.context.applicationcontextinitializer”,异常信息中提到了“org.springframework.boot.context.configurationwarningsapplicationcontextinitializer”。 该异常通常发生在Spring Boot项目中的应用程序上下文初始化阶段。在Spring Boot应用程序中,应用程序上下文需要初始化并配置,以确保正确的设置和运行应用程序。在此过程中,Spring Boot会使用一些ApplicationContextInitializer接口的实例来处理Spring配置并初始化应用程序上下文。 然而,这个错误信息中提到的ApplicationContextInitializer接口实现org.springframework.boot.context.configurationwarningsapplicationcontextinitializer”无法被实例化,原因可能是该被定义为一个接口,而不是一个具体的实现Java运行时无法实例化一个接口。 解决这个问题的方法是查找应用程序中是否存在这个,并将其替换为可实例化的实现。也可以查看应用程序中的版本和依赖,是否与Spring Boot的要求相符,否则可能会导致在初始化应用程序上下文时出现似的异常。另外,也可以在应用程序的日志中查找更详细的错误信息,以便精确定位和解决相关问题。 总之,这个异常通常是在Spring Boot应用程序中的应用程序上下文初始化阶段出现的,解决方法是查找问题的原因并进行相应的修正。 ### 回答3: 这个错误信息表示在Java程序中出现异常。更具体地说,它表示传入的参数不被支持或不合法。在这种情况下,程序发现无法实例化接口 “org.springframework.context.ApplicationContextInitializer”,即无法通过该接口创建一个实例。这通常意味着这个接口是一个抽象接口,不能直接实例化。在这种情况下,需要创建一个实现该接口的,然后将该的实例用作参数传递。 此外,该错误信息指出了原因是 “org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer” ,这意味着该异常是由Spring框架的某个组件引起的。可能的原因是该组件需要一个“org.springframework.context.ApplicationContextInitializer”实例作为参数,但是它接收到了一个不合法的参数。这种情况可能会导致程序的某些功能受到影响,或者导致程序无法正常运行。为了解决这个问题,您可以尝试更改传递给该组件的参数型,或者查看是否需要更改程序的其他设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Serendipity~~`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值