SpringBoot服务无法启动,内嵌Tomcat启动失败

本文讲述了SpringBoot服务在不同电脑上启动出现问题,原因是内嵌Tomcat与Servlet版本不兼容。分析发现可能是由于之前项目遗留的javax.servlet依赖导致冲突。解决方案是删除本地仓库中的Servlet旧版本依赖,或者通过在pom.xml中添加排除依赖的配置,以避免打包时引入冲突的依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
在A电脑上明明是好用的,但是git clone到B电脑上突然不好用了.

产生原因:

  1. pom.xml包中有下面的依赖,由于高版本的SpringBoot内嵌的是Servlet3.1,所以会造成冲突.
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>2.5</version>
</dependency>
  1. pom.xml中并没有上面的依赖内容

我这次碰到的就是这个问题,但是原因是一样的!!!

经过一番分析,本机之前开发别的项目时,可能不知不觉中引入过javax依赖,于是,到自己的maven

所对应的仓库目录中查看一番,果然是Servlet2.5版本.

在这里插入图片描述
我们可以将整个javax目录删除,然后重新用maven引入依赖即可.

  1. SpringCloud Gateway与web包冲突

如果你的pom.xml中,同时存在SpringCloud Gatewayweb包那么会有此问题.

SpringCloud Gateway是基于netty的,而web包中依赖的是tomcat
在这里插入图片描述
解决方案:
可以在spring-boot-starter-web相关依赖中添加<scope>provided</scope>,表示只在编译和测试时生效,并不会被打包.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
	<scope>provided</scope>
</dependency>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值