springboot项目部署到tomcat步骤以及常见问题
------------恢复内容开始------------
本文分为两个部分,一,是打包的步骤,二,是我项目中所遇到的问题以及解决方法
一. 打包为war包步骤
1.修改打包方式为war
在pom.xml文件中将打包格式修改为war格式
<packaging>war</packaging>
2.移除springboot自带的tomcat插件
在pom.xml里找到spring-boot-starter-web依赖节点,将其中包含的tocat去除
<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>
如果在测试时还是想以springboot方式启动,可以再加入依赖,强烈建议该方式
<!--只在测试和编译时使用,在平时调试时使用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
3. 添加servlet-api的依赖
以下两种依赖随意添加一个
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.</version>
<scope>provided</scope>
</dependency>
4. 修改启动类,并且重写初始化方法
springboot项目一般都有一个启动类来启动项目,而部署到tomcat不能通过该方式启动,所以需要改变启动方式,在启动类的同级包下添加一个初始化类,并且继承SpringBootServletInitializer
如下:
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向用main方法执行的Application启动类
return builder.sources(VpnManagementSystemApplication.class);
}
}
接下来就可以打包成war包部署了,打开命令窗口,选择powershell命令,然后在命令行里输入: mvn clean package即可,然后去项目的目录下的target下就可以看到已经打包好的war包。
二. 常见问题
springboot项目在idea中放在tomcat中也是可以运行的,idea中配置一个tomcat来运行项目,最好和服务器版本一样,测试环境和开发环境一样才好寻找问题解决问题,以下问题都是我遇到的,以及有效的解决方法,可能
对于你的项目来说没用,欢迎讨论。
1.jar包冲突问题
在springboot项目的项目中需要手动添加的一些包可能tomcat已经存在,这时就需要删除这些包,否则就会报错,甚至项目直接启动不起来比如在springboot项目下用jsp页面,这时需要添加的依赖包在
tomcat已经存在,就会报错,如下包
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>-->
所以在部署到tomcat报错时,一定要考虑依赖冲突问题。
2.使用pagehelper时,springboot方式启动时正常,放到tomcat出现:“在系统中发现了多个分页插件,请检查系统配置!” 问题
该问题出现的原因在于maven的pagehelper-spring-boot-starter这个依赖,提供了自动配置分页插件的功能,而我们还添加了如下依赖,所以就报错,但是不添加如下依赖项目就直接找不到包,
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
通过在springboot启动类加上如下注解去掉自动配置解决
@SpringBootApplication(exclude = PageHelperAutoConfiguration.class)
3,当你在idea的tomcat启动正常,但是手动将war包放入tomcat放入webapp目录时启动一直报错
该问题也就是,将2个项目部署到tomcat,第一个启动正常,后面一个就报错,而只启动其中任意一个项目都不会报错
在2个项目的配置文件application.yml中,各加入spring.jmx.default-domain = 项目名1,spring.jmx.default-domain = 项目名2 , 再次打成war,并都部署到同一个tomcat的webapps下,
启动正常!
这是本人的第一篇博客,遇到的问题都是我自己遇到并且实测有用的方法,欢迎讨论。本文方法借鉴于如下几个链接,当你还有问题时不妨查看如下链接试试:
https://blog.csdn.net/wang__dream/article/details/80372025
https://blog.csdn.net/qq_34381084/article/details/81485319
https://www.cnblogs.com/jpfss/p/9723828.html
https://www.jianshu.com/p/18ae492099ca
springboot项目部署到tomcat步骤以及常见问题的更多相关文章
- 多个springboot项目部署到tomcat,Error deploying web application archive
每个springboot单独部署到tomcat下可以正常启动,多个一个就发生异常 Error deploying web application archive 解决:配置文件加上配置区分 sprin ...
- SpringBoot项目部署到tomcat
SpringBoot部署到tomcat 一.修改maven.xml 1.添加<.packaging>war</.packaging>,打包为war包 <packaging ...
- Eclipse中web项目部署至Tomcat步骤
Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改为Tomcat安装目录,并解决依赖包输出问题. 1.在Eclipse中添加Tomcat服务器. 2.将web工 ...
- 转:Eclipse中web项目部署至Tomcat步骤
原址:http://blog.csdn.net/lucklq/article/details/7621807 Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改 ...
- 如何把springboot项目部署到tomcat上
前言: 开始以为打包springboot项目为war包丢到tomcat上的webapps下面就可以访问controller层的路径了,可是调用接口却报404的错误,而打开8080的主页,不加路径却可以 ...
- 把spring-boot项目部署到tomcat容器中
http://blog.csdn.net/javahighness/article/details/52515226
- eclipse中将web项目部署到tomcat
eclipse中将web项目部署到tomcat. myeclipse部署WEB项目到tomcat比较方便,但eclipse貌似默认是不会替你将web自动部署到tomcat下的.你Run as该web项 ...
- 将web项目打成war包部署在tomcat步骤
将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...
- SpringBoot_11_将springboot项目部署到外部tomcat上
一.前言 二. 三.参考资料 如何将Spring Boot项目打包部署到外部Tomcat 2.SpringBoot 项目如何在tomcat容器中运行
随机推荐
- vue中使用element2
阻止谷歌下记住密码 当我们将input框的类型设置为密码框的时候,就会出现下面这种效果,不仅样式不统一,有的时候,密码框的上面并不是用户名,而是其他的内容,也会被强制显示为用户名: 首先需要解决样式问 ...
- git命令--使用fork模式工作
一. 1.第一步,先将原作者项目fork到自己的目录下,这个可以直接在控制台操作 可以看到该项目在ins-product目录下,fork之后,可以去查看自己的工作目录 可以看到在本人目录下已经存在该项 ...
- sorted 函数及小练习
python 中sorted函数 sorted() 函数对所有可迭代的对象进行排序操作. sorted 语法: sorted(iterable[, cmp[, key[, reverse]]]) 参数 ...
- Linux下Jmeter+nmon+nmon analyser实现性能监控及结果分析
一.概述 前段时间讲述了Jmeter利用插件PerfMon Metrics Collector来监控压测过程中服务器资源的消耗,一个偶然机会,我发现nmon这个 工具挺不错,和Jmeter插件比起来, ...
- Sharepoint 编辑WebPart时,WebPart属性为灰色不可用
一般在客户端设置就是灰色的,解决方法就是,要在服务器上进行设置,就可以了.:)
- Oracle中truncate表不更新last_ddl_time列
Oracle中truncate表不更新last_ddl_time列 问题描述 最近发现数据库中定时job的某张表,每天都有truncate动作,由于调整了job的interval时间,想查看last_ ...
- 手写一个Redux,深入理解其原理
Redux可是一个大名鼎鼎的库,很多地方都在用,我也用了几年了,今天这篇文章就是自己来实现一个Redux,以便于深入理解他的原理.我们还是老套路,从基本的用法入手,然后自己实现一个Redux来替代源码 ...
- Tomcat Filter之动态注入
前言 最近,看到好多不错的关于"无文件Webshell"的文章,对其中利用上下文动态的注入Filter的技术做了一下简单验证,写一下测试总结,不依赖任何框架,仅想学习一下tomca ...
- Netty 源码解析(四): Netty 的 ChannelPipeline
今天是猿灯塔“365篇原创计划”第四篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源码解析(二): Netty 的 Channel Netty ...
- 每日一题 - 剑指 Offer 36. 二叉搜索树与双向链表
题目信息 时间: 2019-06-29 题目链接:Leetcode tag: 二叉搜索树 中序遍历 递归 深度优先搜索 难易程度:中等 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循 ...