小白个人心得,大佬勿喷
我:”我要用spring boot搭一个小工具,已经可以用内嵌tomcat启动了“
现实:”搭好了放在服务器上吧,服务器是tomcat7,spring boot内嵌的tomcat版本是8.0以上吧,解决一下包冲突问题“
我:。。。。。网上查了n久,陷入了一个个坑,太菜了2333手动哭泣,终于得到步骤如下
一:<packaging>war</packaging>在pom文件中申明打成war包,因为war包放在tomcat中的webapps会被直接解析
二:因为要用外部的tomcat7,那么内嵌的tomcat8就得剔除,得专一不是,不能家里红旗不倒,外面彩旗飘飘
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> ##这个就是表示tomcat只在编译和测试时候使用
</dependency>
三:使用外部的tomcat,那么就要继承SpringBootServletInitializer并重写它的方法
public class RqaFinalApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
return builder.sources(RqaFinalApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(RqaFinalApplication.class, args);
}
}
其实以上三点都在网上能够轻易找到,网上介绍的一些方法是诸如剔除servlet-api等方式,但是我自己试了,都不奏效,报错javax.el-api-3.0.0.jar not loaded,所以第四点属于个人解决方式:
四:在tomcat7中有el-api.jar,但并不支持spring boot,在tomcat的lib文件夹下加入自己下载的javax.el-api-3.0.0.jar即可,之后把打好的war包放在webapps目录下,就能够成功运行了,并不会给tomcat7带来麻烦
小白言论,仅供参考
网友评论