背景
20181108用IDEA新建了一个基于springboot2.1.0的项目,在IDEA上用内置的tomcat8.5跑可以正常运行,但是后面项目不断的开发,用到了zull,突然有一天打包放在服务器的tomcat8.5里,发现项目启动不了了,就是不出现那个springboot的大字了,在spring前面就停掉了,仅仅是把war给解压了
tomcat也没用报错信息,tomcat是可以正常启动的,仅仅是项目起不来,也不知道啥情况,再新建一个springboot2.1.0项目扔服务器tomcat里可以运行呀。
解决
1一开始以为是不是springboot版本太高了,然后把服务器tomcat8换成9,依然不行,
2然后又把springboot2.1.0改成了2.0.0,结果可以正常启动,
3然后又把springboot2.1.0改成了2.0.4,结果启动不起来,要疯了
4经过2天的努力,原来的那个项目不管怎么样都不行,但是新建一个项目把原来的代码全部拷过来就可以,这尼玛。。。。。。。
5今天不打算搞的,就直接用新建的项目吧,但是心里不爽,觉得肯定是打包出问题了,但是又不确定是不是springboot版本问题
然后试着直接用idea在项目里运行外部的tomcat8.5,发现还是不行,tomcat是正常跑起来的,项目没起来,在网上idea如何运行外部tomcat的时候,大家都说改代码之类的,我就在想,怎么整个tomcat这么麻烦的吗?之前不用springboot的时候很简单呀
但是这给我灵感了,搜难道是tomcat找不到springboot项目的启动类????
然后让启动类集成SpringBootServletInitializer,重写configure方法
@SpringBootApplication
//使Zuul代理生效
@EnableZuulProxy
//配置扫描dao层
@MapperScan("com.beacool.marslight.dao")
public class MarslightZuulServiceApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MarslightZuulServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MarslightZuulServiceApplication.class, args);
}
}
果然,再打war包放在服务器的tomcat上能运行起来了!!!,就是tomcat在启动war包时找不到springboot的入口类!!!!!