springboot打war包,部署到tomcat 404错误解决
本文链接:https://blog.csdn.net/yswKnight/article/details/80054284
SpringBoot打war包,并且部署到Tomcat服务器,运行报错404(springboot专属404页面)【完美解决】
参考文档:idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到
修改pom文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| 1、packaging由jar变成war <groupId>com.wangys</groupId> <artifactId>wechatProject</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging>
2、剔除springboot本身Tomcat配置 spring boot 本身是内置了tomcat的,但是我们在外面的tomcat部署项目的时候,就必须把springboot本身的tomcat剔除掉,否则会形成冲突!
<scope>provided</scope> 作用: provided表明该包只在编译和测试的时候用!
<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> 14 3、将pom文件中的servlet-api.jar包设置为只有在编译和测试的时候用!因为tomcat本身也有servlet-api.jar包,结果会产生冲突! <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency>
4、如果有下面这个插件spring-boot-maven-plugin,请将其注释,否则会打包错误! <build> <finalName>weChatProject</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.0.1.RELEASE</version> <configuration> <mainClass>${start-class}</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
|
2、继承SpringBootServletInitializer方法
SpringBoot启动类继承SpringBootServletInitializer方法,并重写configure方法
点解:
springboot项目打成war包部署到tomcat时需要改变启动方式,否则运行tomcat时war包只会解压,但是加载不了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @RestController @EnableAutoConfiguration @ComponentScan @SpringBootApplication public class WeChatApplication extends SpringBootServletInitializer{ @RequestMapping("/hello") public String index() { return "Hello World"; }
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(WeChatApplication.class); }
public static void main(String[] args) { SpringApplication.run(WeChatApplication.class, args); } }
|
默认配置下的访问路径(至关重要)
默认配置下,将war包发布到tomcat服务器,需要加war包的名称!!!!
http://localhost:8080/war包名/@RequestMapping.value访问了
————————————————
版权声明:本文为CSDN博主「詠聖wK」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yswKnight/article/details/80054284