APPLICATION FAILED TO START 异常报错原因及解决方案
一、APPLICATION FAILED TO START 异常报错原因分析
1. 异常报错描述:
APPLICATION FAILED TO START 应用程序无法启动/应用程序启动失败
这个错误提示只是告诉了我们应用程序启动失败,可能造成的原因很多,而仅仅只是这个提示无法告诉我们具体的原因,我们需要根据具体的原因进行具体的分析。
二、端口号被占用(Port 8080 was already in use) 导致的 APPLICATION FAILED TO START
1. 详细描述:
1.1 详细描述1(对应案例1):
Description:
Web server failed to start. Port 8080 was already in use.
2. 异常报错信息案例:
2.1 案例1:
2.1.1 异常错误描述:
错误原因:端口号 8080 被占用 导致的应用程序启动失败
2.1.2 解决方案:
-
关闭对应端口号的应用程序(服务)
- 找到启动对应端口号的项目,直接关闭(如果找不到,可使用下面链接的解决办法)
- 端口号被占用解决办法(超详细)https://blog.csdn.net/weixin_46030002/article/details/126649348
-
修改要启动项目的端口号
此项目应该为 SpringBoot 项目,可以通过修改配置文件的方式修改该项目的端口号
-
application.properties
server.port=8090 1
-
application.yml
server: port: 9000 12
-
三、Mybatis 导致的 APPLICATION FAILED TO START
1. 详细描述:
1.1 详细描述1(对应案例1):
Description:
Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
2. 异常报错信息案例:
2.1 案例1:
2.1.1 异常错误描述:
错误原因:数据源没有配置导致的应用程序启动失败
2.1.2 解决方案(一):
解决思路:这里,我们只需要检查我们的配置文件是否添加了正确的数据源信息
-
application.properties(创建项目默认)
spring.datasource.url=jdbc:mysql://localhost:3306/demo_admin?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root 123
-
application.yml
spring: datasource: url: jdbc:mysql://localhost:3306/demo_admin?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai username: root password: root 12345
2.1.3 解决方案(二):
当然如果我们不需要使用这个配置源,我们也可以忽略/排除这个数据源
我们可以在 SpringBoot
项目的启动类上添加 exclude
属性
// exclude= {DataSourceAutoConfiguration.class} 忽略数据源的自动配置
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class MallOssApplication {
public static void main(String[] args) {SpringApplication.run(MallOssApplication.class, args);}
}
12345
四、Knife4J 导致的 APPLICATION FAILED TO START
1. 详细描述:
1.1 详细描述1(对应案例1):
Description:
Field openApiExtensionResolver in cn.cy.config.Knife4jConfiguration required a bean of type ‘com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver’ that could not be found.
1.2 详细描述2(对应案例2):
Description:
Parameter 0 of constructor in com.github.xiaoymin.knife4j.spring.plugin.DynamicResponseModelReader required a bean of type ‘springfox.documentation.schema.TypeNameExtractor’ that could not be found.
2. 异常报错信息案例:
2.3 案例3
***************************
APPLICATION FAILED TO START
***************************
Description:
Field iXBService in com.xbinfo.clc.hm.controller.XBEndpoint required a bean of type 'com.xbinfo.clc.hm.service.IXBService' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.xbinfo.clc.hm.service.IXBService' in your configuration.
2.3.1 解决方案:
1.可以将@Autowired注解改为@Resource,试一下。
2.我们在controller使用的service没有注入spring容器,那么我们可以在启动类上,加上包扫描注解,让这个bean所在的包能扫描到:
@ComponentScan(basePackages = {"com.aliqingge.service"})
3.是否有对应的实现类.实在找不到原因了我又重新看了一下自己的代码,发现没有实现类,这个也不行.
4.同时要把自己的项目多clean一下,多重启两下,清理一下缓存.这个也很重要
5.在百度的时候看别人的文章一定要耐心的去看.我就是着急忽略了百度到的一篇文章中的一段话,恰好这段话就是我自己出现错误的原因,我慌里慌张的没有读完就关了.
注意:如果上述不能解决问题,那么可能你需要检查一下自己的实现类,是否有对应实现类,是否实现的是对应的接口,我自己的原因就是因为我自己把实现类中的代码给注释掉了,导致的这个service没有实现类实现所有导致,慎重。
2.2 案例1:
2.2.1 异常错误描述:
错误原因:类
DynamicResponseModelReader
因为没有无参构造方法所以没有被注入
2.2.2 解决方案:
解决思路:这里,我们只需要检查我们的配置类中是否添加了
@EnableSwagger2WebMvc
注解,或者检查是否添加了@ComponentScan({"springfox.documentation.schema"})
- 解决方案一:添加
@EnableSwagger2WebMvc
注解
- 解决方案二:添加
@ComponentScan({"springfox.documentation.schema"})
2.1 案例2:
2.1.1 异常错误描述:
错误原因:类
Knif4jConfiguration
中的openApiExtensionResolver
属性没有被注入
2.1.2 解决方案:
解决思路:这里,我们只需要检查我们的配置文件是否添加了正确的
knif4j
配置
-
application.properties(创建项目默认)
knife4j.enable=true 1
-
application.yml
#开启Knife4j的增强模式 knife4j: enable: true 123