项目场景:
无论是从网上还是自己新建一个WEB项目时,有时回遇到一些奇怪的问题。次办法对springboot项目无效,因为springboot项目自带tomcat。
问题描述
启动springMvc项目,报错信息如下图所示
报错信息
[2022-09-28 08:54:09,610] 工件 chatroom:war exploded: 正在部署工件,请稍候…
28-Sep-2022 20:54:10.328 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到
28-Sep-2022 20:54:10.328 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[]启动失败
[2022-09-28 08:54:10,344] 工件 chatroom:war exploded: 部署工件时出错。请参阅服务器日志了解详细信息。
28-Sep-2022 20:54:19.459 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\Program Files\apache-tomcat-10.0.22\webapps\manager]
28-Sep-2022 20:54:19.631 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\Program Files\apache-tomcat-10.0.22\webapps\manager]的部署已在[172]毫秒内完成
原因分析:
最后的结果往往都各个版本之间的不匹配导致的
找到项目结构里的controller层,看一下导入的包
package cn.itcast.chatroom.web.controller;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import cn.itcast.chatroom.domain.User;
注意图片中红线框住的部分。
如果导入的是javax.servlet包,那就用tomcat8,tomcat9应该也行,没有验证9是不是可以。对应JDK的版本可以是JDK1.7或者JDK1.8。
如果导入的是jakarta.servlet包,那就用tomcat10。其中对应JDK的版本要是JDK15或者JDK18了。
解决方案:
controler层用的是javax.servlet包,对应的修改tomcat的版本。
把tomcat的版本修改成tomcat8.5。解决问题。