You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot WAR包部署至XAMPP Tomcat报错的解决方法咨询

解决SpringBoot WAR包部署到XAMPP Tomcat的jar冲突问题

嘿,这个问题我太熟了!你碰到的是典型的依赖冲突问题——你的Spring Boot WAR包里自带了嵌入式Tomcat的核心jar(tomcat-embed-core-8.5.28.jar),而XAMPP内置的Tomcat本身已经提供了Servlet API相关的类(就是报错里提到的javax/servlet/Servlet.class),两个地方的类重复了,Tomcat就会拒绝加载这个冲突的jar包。

下面是具体的解决步骤:

  • Maven项目修改pom.xml:把Spring Boot的Tomcat依赖标记为provided范围,这样打包时不会将该jar包打入WAR包,避免和服务器端Tomcat的依赖冲突。修改后的依赖代码如下:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    

    这里的provided表示该依赖只在编译、测试阶段生效,打包时不会被包含到最终的WAR文件中。

  • Gradle项目修改build.gradle:如果你的项目用的是Gradle,对应的配置修改如下:

    configurations {
        providedRuntime
    }
    
    dependencies {
        providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    }
    
  • 重新打包并部署:修改完依赖配置后,重新执行打包命令(Maven用mvn clean package,Gradle用gradle clean war),将新生成的WAR包放到XAMPP的Tomcat的webapps目录下,重启Tomcat服务即可。

另外,你可以顺便检查下WAR包的WEB-INF/lib目录,看看有没有其他和Servlet API相关的冲突jar(比如servlet-api.jar),如果有的话也需要同样设置为provided或者直接排除掉。

内容的提问来源于stack exchange,提问作者Munal Dhakal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:35:55