欢迎大家来到IT世界,在知识的湖畔探索吧!
同事问了,打成war不能执行,报错,找了好久找不到原因,今天自己也碰到这个问题,一样的。
原因是servlet关联没有,二是启动时调用原始的启动类
解决方案如下:
pom.xml
1、打war
<packaging>war</packaging>
欢迎大家来到IT世界,在知识的湖畔探索吧!
2、去掉关联,可选步骤
欢迎大家来到IT世界,在知识的湖畔探索吧!<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
3、添加servlet-api的依赖(下面任一)
<!--要放到tomcat中运行,war的方式,加这个,否则不用加--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
欢迎大家来到IT世界,在知识的湖畔探索吧!<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>8.0.36</version> <scope>provided</scope> </dependency>
4、增加启动再调用原始的main类
若原始的启动类是:AdminApplication,那么在同包中,增加如下的文件
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; / * 增加这个类,修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */ public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(AdminApplication.class); } }
或者启动类改成
欢迎大家来到IT世界,在知识的湖畔探索吧!import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class AdminApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(AdminApplication.class); } public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/134988.html