Tomcat版本与spring中servlet,jsp依赖不一致造成的问题
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
#1、spring项目部署到外置tomcat,报错
30-Apr-2021 20:16:14.178 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
30-Apr-2021 20:16:14.179 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[/ch10_spring_web_war_exploded]启动失败
使用的tomcat版本是10.0,在pom.iml文件中需引入依赖为```
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
不使用监听器不报错,使用监听器之后报错30-Apr-2021 20:16:14.178 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件,无法运行,检查代码,发现没问题,查看日志,在IDEA的help中点击show log in explorer中可以查看日志,找到tomcat,进入查看日志,查看以local host开头那个,找到相应日志,发现错误是
0-Apr-2021 13:19:24.733 信息 [http-nio-8080-exec-6] org.apache.catalina.core.ApplicationContext.log 将servlet[RegisterServlet]标记为不可用
30-Apr-2021 13:19:24.733 严重 [http-nio-8080-exec-6] org.apache.catalina.core.StandardWrapperValve.invoke 分配异常的servlet [RegisterServlet]
java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1401)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1224)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
后来百度到是tomcat版本太高,要使用jakarta.servlet.jsp,但是spring不行,没找到办法解决,虽然导入依赖了,但是监听器还是会使用javax.servlet,只能下载tomcat9,可以下载两个tomcat,解决问题。