Failed to introspect annotated ** org.springframework.boot.web.support.SpringBootServletInitializer
Spring Boot
应用启动类:
@SpringBootApplication
public class ApiApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) {
return applicationBuilder.sources(ApiApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
- 解决方案一,修改
pom.xml
,将tomcat
的scope
修改为compile
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
<!--<scope>provided</scope>-->
</dependency>
- 解决方案二,使用命令行启动程序,但是这种启动方式就不能断点调试了:
spring-boot:run
原因:这个可能时IDEA的一个BUG或者是没有设置好classpath
,程序在启动时找不到servlet context
,打包成war
时放到tomcat
容器里面去运行时war
包会使用tomcat
的servlet context
;在本地调试时,如果scope
是provided
的话,由于IDEA
没有设置好classpath
,然后也没有用tomcat
的依赖,所以就找不到servlet context
,因而报错。由此就产生了如上两种可选的解决方案!