org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败

启动tomcat10.0.2时遇到如下错误

Connected to server
[2021-04-05 05:24:00,038] Artifact springWeb:war exploded: Artifact is being deployed, please wait…
05-Apr-2021 17:24:02.208 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
05-Apr-2021 17:24:02.240 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
05-Apr-2021 17:24:02.240 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[]启动失败

打开tomcat日志文件C:\Users\shenyunxiang\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Tomcat_10_0_2_springWeb\localhost.2021-04-05.log(tomcat日志文件不同的人不同项目路径不同,但格式如上,根据自己情况调整)可以看到如下报错:找不到监听器的类。

05-Apr-2021 16:08:18.387 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.listenerStart 配置应用程序监听器[org.springframework.web.context.ContextLoaderListener]错误
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener

然后我们打开编译生成的target\springWeb\WEB-INF\lib目录下确实没有servlet的jar包存在,但是回看pom.xml中我们是配置了servlet的,经过查找资料发现是pom.xml中scope标签导致的
在这里插入图片描述
我们只需要把servlet的scope标签配置为compile或者直接把scope标签删掉不进行配置,然后同步一下maven工程,重新启动tomcat即可成功,而此时可以看到lib目录下成功加载了servlet的jar包
在这里插入图片描述

如果使用的是tomcat其他版本,这里测试了tomcat7,则servlet必须要把scope标签设置为provided即<scope>provided</scope>否则会报如下错误

Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run (default-cli) on project springWeb: Could not start Tomcat

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值