springboot最方便的打包方式是jar包,然后用java -jar命令启动,但是有的时候还是需要打包成war包部署到外部tomcat上启动,今天遇到的这个问题就是。
1、将项目在idea里面可以完美启动,而且接口访问没有问题
2、打包成jar包或者war包用jar命令启动也正常,
3、就是将war包丢到本地tomcat上,启动tomcat,tomcat启动了但是项目没启动。
网上找了很多帖子,也都湿了,有的说tomcat的配置问题,有的说jsp的问题,还有maven的导包问题。都试了就是不行
springboot 内嵌tomcat打包时排除
<!-- spring boot 内置tomcat jsp支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>
最后拿着之前的项目对比各种试发现是因为启动类的问题
SpringBootServletInitializer 启动类是为了使springboot项目能够打包成war包。具体的讲解可以百度下
解决办法
@SpringBootApplication public class Demo2Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Demo2Application.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Demo2Application.class); } }
最终让项目的启动类继承这个类,然后重新configure方法,ok完美解决。项目在tomcat中能够启动了