------------恢复内容开始------------

本文分为两个部分,一,是打包的步骤,二,是我项目中所遇到的问题以及解决方法

一. 打包为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步骤以及常见问题的更多相关文章

  1. 多个springboot项目部署到tomcat,Error deploying web application archive

    每个springboot单独部署到tomcat下可以正常启动,多个一个就发生异常 Error deploying web application archive 解决:配置文件加上配置区分 sprin ...

  2. SpringBoot项目部署到tomcat

    SpringBoot部署到tomcat 一.修改maven.xml 1.添加<.packaging>war</.packaging>,打包为war包 <packaging ...

  3. Eclipse中web项目部署至Tomcat步骤

    Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改为Tomcat安装目录,并解决依赖包输出问题. 1.在Eclipse中添加Tomcat服务器. 2.将web工 ...

  4. 转:Eclipse中web项目部署至Tomcat步骤

    原址:http://blog.csdn.net/lucklq/article/details/7621807 Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改 ...

  5. 如何把springboot项目部署到tomcat上

    前言: 开始以为打包springboot项目为war包丢到tomcat上的webapps下面就可以访问controller层的路径了,可是调用接口却报404的错误,而打开8080的主页,不加路径却可以 ...

  6. 把spring-boot项目部署到tomcat容器中

    http://blog.csdn.net/javahighness/article/details/52515226

  7. eclipse中将web项目部署到tomcat

    eclipse中将web项目部署到tomcat. myeclipse部署WEB项目到tomcat比较方便,但eclipse貌似默认是不会替你将web自动部署到tomcat下的.你Run as该web项 ...

  8. 将web项目打成war包部署在tomcat步骤

    将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...

  9. SpringBoot_11_将springboot项目部署到外部tomcat上

    一.前言 二. 三.参考资料 如何将Spring Boot项目打包部署到外部Tomcat 2.SpringBoot 项目如何在tomcat容器中运行

随机推荐

  1. 平时自己常用的git指令

    增删改查 创建标签 $ git tag -a v1.4 -m 'my version 1.4' 用 -a (译注:取 annotated 的首字母)指定标签名字即可 -m 选项则指定了对应的标签说明 ...

  2. Shader专题:卡通着色(一)控制颜色的艺术

    什么是 Shader? 关于什么是 Shader ,各种百科各种教程都有说过,但是今天我们就从一个另一个角度去试着理解什么是 Shader? 我们先看下 Shade 的英文意思,如下: v.给...遮 ...

  3. java普通对象和json字符串的互转

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

  4. 教你如何开发一个完败Miracast的投屏新功能

      手机与电视,是陪伴在我们生活最常见,陪伴最长久的智能设备.迅猛发展的移动终端与通信技术,赋予了手机更广阔多元的应用生态,大屏电视则以大视野和震撼影音,弥补了手里方寸带来的视觉局限.而今,手机的延伸 ...

  5. 为什么Spring Security看不见登录失败或者注销的提示

    有很多人在利用Spring Security进行角色权限设计开发时,一般发现正常登录时没问题,但是注销.或者用户名时,直接就回到登录页面了,在登录页面上看不见任何提示信息,如“用户名/密码有误”或“注 ...

  6. 一个ACE 架构的 Socket Client

    .h /************************************************************** * Filename: TcpClient.h * Copyrig ...

  7. 猿灯塔:Java程序员月薪三万,需要技术达到什么水平?

    最近跟朋友在一起聚会的时候,提了一个问题,说Java程序员如何能月薪达到二万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到.也许是的,小公司或者非互联网企业拿二万的不太 ...

  8. 深入了解JVM-方法区

    本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天呢!灯塔君跟大家讲: 深入了解JVM-方法区 当JVM使用类装载器装载某个类时,它首先要定位对应的class文件,然后读入这个class文件,最 ...

  9. html5中contenteditable属性如果过滤标签,过滤富文本样式

    ​​在div中使用contenteditable=”true”可以达到模拟输入框的效果,但是当我们复制其他网页内容进去的时候,会发现连带的样式也一起复制进去了.很明显我们不需要复制富文本样式,那么如何 ...

  10. day11 本日作业+周末作业

    目录 一.今日作业 1.编写文件copy工具 2.编写登录程序,账号密码来自于文件 3.编写注册程序,账号密码来存入文件 二.周末综合作业: 1.编写用户登录接口 2.编写程序实现用户注册后,可以登录 ...