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
相关产品推荐
相关产品推荐

