SpringBoot使用IDEA设置的外部Tomcat启动
前言
使用springboot内嵌的tomcat启动是没问题,但是工程是要放到服务器上的tomcat的,所以springboot内嵌的能够启动,但不代表服务器的tomcat能启动起来,我就遇到了这个问题,所以本地使用外部的tomcat启动,模拟服务器的tomcat可以测试一下,有问题及时修复,不要等到放到服务器上时才发现问题
昨天遇到的问题,使用sprintboot自带的tomcat启动是没问题的,但是使用外部的tomcat启动一直没有加载启动类,排查了几个小时没解决;最后发现启动没有继承SpringBootServletInitializer导致总结一下idea使用外部tomcat时遇到的坑
1.idea中配置tomcat(假设你的tomcat已经已下载且安装好)
1.1选择Edit Configuration选项

1.2 点击加号选择tomcat中的local
配置如图所示,URL路径,HTTP port 这里配置的是8080

1.3 Deployment的配置
选择war包,注意后缀为war exploded不要选


1.4 环境变量的一些参数根据需要配置

1.5 点击File->Project Structure


到此tomcat的配置就完成了
2.sprintboot的配置(假设sprintboot项目你已经建好了)
2.1 启动类
- 修改启动类,使其继承SpringBootServletInitializer类,重写configure方法。
- 如果SpringBoot帮我们建立了SpringBootServletInitializer类文件,直接删掉,修改最开始的SpringBootApplication 项目启动类,就是有main方法的那个
@SpringBootApplication(scanBasePackages = {"io.test"})
@EnableScheduling
public class BigscreenApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(BigscreenApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
logger.info("start BigscreenApplication with:" + System.getenv().toString());
return builder.sources(BigscreenApplication.class);
}
}
2.2 pom文件修改
因为要打成war所以需要起个名称<finalName>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
<finalName>test</finalName>
</build>
2.3如果日志log4j2.xml配置未生效,可能是没引入spring-boot-starter-logging
注意:spring-boot-starter-web中去除spring-boot-starter-logging依赖,否则日志jar包会有冲突,导致启动失败
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2.4 编译时可能会报:Error java: 无法访问javax.servlet.ServletException 找不到javax.servlet.ServletException的类文件
是因为缺少servlet的jar包引入即可
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
SpringBoot使用IDEA设置的外部Tomcat启动的更多相关文章
- springboot使用内部tomcat启动和外部tomcat启动的区别
springboot本身提供了内部tomcat,可以使用main方法直接启动即可,此时在访问项目请求时,不需要加上项目名称.例如:http://localhost:8088/user/ 如果使用外部t ...
- SpringBoot集成Socket服务后打包(war包)启动时如何启动Socket服务(web应用外部tomcat启动)
1.首先知道SpringBoot打包为jar和war包是不一样的(只讨论SpringBoot环境下web应用打包) 1.1.jar和war包的打开方式不一样,虽然都依赖java环境,但是j ...
- springBoot使用外部Tomcat启动项目
实现思路是: 将springBoot项目自带的tomcat在部署的时候不使用. 方法一:将springBoot自带tomcat编辑成只在编译和测试时使用. 转载出处:https://www.edurt ...
- springboot项目怎么部署到外部tomcat
spring-boot项目中,默认提供内嵌的tomcat,所以打包直接生成jar包,用Java -jar命令就可以启动. 但是也有一定的需求,会使用外部tomcat来部署项目.下面来看: 1.新建项目 ...
- spring boot项目使用外部tomcat启动失败总结
1. springboot的tomcat使用外部提供的. dependency> <groupId>org.springframework.boot</groupId> ...
- 通过一次SpringBoot打成war包部署到tomcat启动总结一般jar包冲突的解决方法
启动时,报错信息如下: 28-Sep-2018 16:55:41.567 严重 [localhost-startStop-1] org.apache.catalina.core.StandardCon ...
- springboot学习五:IDEA外部tomcat发布
pom.xml配置 屏蔽自带tomcat <dependency> <groupId>org.springframework.boot</groupId> < ...
- Springboot项目打成jar包运行 和 打成war包 外部tomcat运行
Jar打包方式运行 类型为jar时 <packaging>jar</packaging> 1.使用命令mvn clean package 打包 2.使用java –jar 包 ...
- tomcat启动时常见错误问题集锦
1:环境变量 问题:The JAVA_HOME environment variable is not defined This environment variable is needed to r ...
随机推荐
- 『动善时』JMeter基础 — 60、固定吞吐量测试
目录 1.定时器介绍 2.固定吞吐量定时器介绍 3.固定吞吐量定时器界面说明 4.固定吞吐量定时器的使用 (1)测试计划内包含的元件 (2)登陆请求内容 (3)固定吞吐量定时器内容 (4)线程组元件内 ...
- 快看!❤️又一超实用浏览器插件!常用网站自动整合,JSON格式化,CSDN全站去广告!多种工具一键调用。开发者的福音!
其实这个插件才出来的时候博主也下载了使用过,并没有什么亮点,那时候甚至觉得有点多余,因为CSDN全站去广告啥的,早就安装了油猴脚本,广告?不存在的嘿嘿.. 就在前几天看见CSDN的活动在推荐这款插件, ...
- Oracle数据库安装Version12c
1.安装规划 Oracle数据库版本: Linuxamd64_12102_database 12c Linux服务器系统: CentOS Linux release 7.5.1804 (Core) 6 ...
- Jedis 基本使用
引入 jedis 依赖: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <!-- Dec 15, 2 ...
- html 基础 vscode的常用快捷键
1.ctrl+/ //注释代码 2.文件内容查找替换:ctrl+f ctrl+h ,替换一个ctrl+shift+1,替换所有ctrl+alt+enter 3.移动当前行,向上alt+up(方向键↑) ...
- 使用uiautomatorviewer,查看app页面元素,进行元素定位
环境搭建: 安装adt,安装成功后,就可以在adt路径下的tools文件夹中找到uiautomatorviewer.bat 用来做什么? uiautomatorviewer.bat是用来扫描和分析An ...
- 初识python 之 ImportError: No module named _ssl
场景 安装好python之后,导入ssl模块报错: ImportError: No module named _ssl 解决方法 查看openssl.openssl-devel是否安装 rpm -qa ...
- 收到西门子发来的UG告知函怎么办?Solidworks盗版被查如何防范?厂商是怎么样查到公司在用盗版,有什么方法可以核实真假?……
收到西门子发来的UG告知函怎么办?Solidworks盗版被查如何防范?厂商是怎么样查到公司在用盗版,有什么方法可以核实真假?--很多企业信息化管理leader或者老板都希望能够通过一些取巧的办法来防 ...
- 【记录一个问题】linux下使用opencv中的UMat,性能并未提升,反而略有下降
使用后性能略微下降,一开始怀疑是UMat拷贝的问题.运行 nvidia-smi -l 1, 发现GPU占用始终为0.说明opencl使用的是CPU版本,而不是GPU版本.明天试验opencl的GPU版 ...
- 配置vscode的C++环境Unexpected GDB output from command "-environment-cd
原因 中文字符 换成D盘目录下以后.