tomcat启动异常:子容器启动失败(a child container failed during start)
在学习过程中,出现这个问题,上网查了一下,总结以下几种解决方案,并找出自己的问题。
1、没有清理之前maven项目的历史。
解决方法:执行clean命令,然后重新启动项目。
操作:添加maven helper插件后,右键→run maven→clean

ps:关于maven项目历史是啥我不太了解。
2、pom.xml文件中servlet-api依赖导入问题。
解决方法:在依赖中添加
示例:

3、web.xml中servlet与servlet-mapping的配置错误。
这个错误在用xml配置Servlet时可能出现,而Servlet从3.0版本以后支持@WebServlet注解配置url,所以这个问题不常见了。
解决方法:检查web.xml文件中配置,或者删掉这部分内容,改用@WebServlet注解配置。
一个配置正确的样例如下:
注意url-pattern内容的斜杠

或改为注解配置:
@WebServlet("/demo13")
4、url-pattern格式错误。
url-pattern配置简略知识点总结:
(1)一个Servlet(实为继承Servlet的类)可以配置多个url-pattern。
@WebServlet(urlPattern={"/ex01","/ex02"})
(2)urlPattern有四种配置规则。
精准匹配:@WebServlet("/demo/ex01")
目录匹配:@WebServlet("/demo/*")
扩展名匹配:@WebServlet("*•do")
任意匹配:@WebServlet("/*")或@WebServlet("/")
除了扩展名匹配,其他匹配方式都需要有斜杠("/"),但最前面的斜杠容易被忽略。
5、自己的问题
了解以上各种问题之后,我检查了自己的代码,最终发现自己犯的错误有两个。
(1)忘记了添斜杠

在做urlPattern配置练习时,多个路径配置中,忽略了第二个的斜杠。有点尴尬,哈哈…
(2)路径名重复
在添加完斜杠后,运行tomcat还是出错了,我检查了又检查,最后终于发现一个可能的问题,经过实验之后确定了自己的猜测。
相信细心的伙伴已经发现,明明是Demo07,但路径却是/demo01与/demo02。
我当时为了省事随便取了两个名字,而这两个路径名在之前学习的案例就已经使用了,所以启动时报错了。
经过改动,tomcat启动终于正常。


6、一点补充
写这篇文章时,为了拍第三个问题的示例图遇到的情况,如果某个Servlet已经用了web.xml配置urlPattern,就不可以再用注解配置了,一定要把web.xml中的相关内容删干净才可以。
栏 目:其它服务器
下一篇:Tomcat部署web项目出现http状态404未找到的详细解决方案
本文标题:tomcat启动异常:子容器启动失败(a child container failed during start)
本文地址:https://zz.feitang.co/server/28969.html
您可能感兴趣的文章
- 12-22nginx代理实现静态资源访问的示例代码
- 12-22Docker 存储管理的几种方式
- 12-22nginx静态资源的服务器配置方法
- 12-22Docker Compose部署微服务项目上线功能
- 12-22GPU服务器的多用户配置方法
- 12-22docker-compose搭建etcd集群的实现(三节点)
- 12-22docker中mysql开启日志的实现步骤
- 12-22Linux下docker安装mysql8并配置远程连接
- 12-22docker部署mysql8并设置可远程连接
- 12-22阿里云oss对象存储使用详细步骤


阅读排行
推荐教程
- 12-11docker存储目录迁移示例教程
- 12-10docker start启动容器后仍然exit状态的解决
- 12-10Linux下如何安装Logstash
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法
- 12-13k8s编排之Deployment知识点详解
- 12-13Nginx IP封禁及自动封禁IP的实现
- 12-13Nginx代理Partainer如何使用





