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中能夠啓動了