tomcat启动异常:子容器启动失败(a child container failed during start)

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

在学习过程中,出现这个问题,上网查了一下,总结以下几种解决方案,并找出自己的问题。

1、没有清理之前maven项目的历史。

解决方法:执行clean命令,然后重新启动项目。

操作:添加maven helper插件后,右键→run maven→clean

tomcat启动异常:子容器启动失败(a child container failed during start)插图

ps:关于maven项目历史是啥我不太了解。

2、pom.xml文件中servlet-api依赖导入问题。

解决方法:在依赖中添加<scope>标签,内容为provided。

示例:<scope>provided</scope>

tomcat启动异常:子容器启动失败(a child container failed during start)插图1

3、web.xml中servlet与servlet-mapping的配置错误。

这个错误在用xml配置Servlet时可能出现,而Servlet从3.0版本以后支持@WebServlet注解配置url,所以这个问题不常见了。

解决方法:检查web.xml文件中配置,或者删掉这部分内容,改用@WebServlet注解配置。

一个配置正确的样例如下:

注意url-pattern内容的斜杠

tomcat启动异常:子容器启动失败(a child container failed during start)插图2

 或改为注解配置:

@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)忘记了添斜杠

tomcat启动异常:子容器启动失败(a child container failed during start)插图3

在做urlPattern配置练习时,多个路径配置中,忽略了第二个的斜杠。有点尴尬,哈哈…

(2)路径名重复

在添加完斜杠后,运行tomcat还是出错了,我检查了又检查,最后终于发现一个可能的问题,经过实验之后确定了自己的猜测。

相信细心的伙伴已经发现,明明是Demo07,但路径却是/demo01与/demo02。

我当时为了省事随便取了两个名字,而这两个路径名在之前学习的案例就已经使用了,所以启动时报错了。

经过改动,tomcat启动终于正常。

tomcat启动异常:子容器启动失败(a child container failed during start)插图4

tomcat启动异常:子容器启动失败(a child container failed during start)插图5

6、一点补充

写这篇文章时,为了拍第三个问题的示例图遇到的情况,如果某个Servlet已经用了web.xml配置urlPattern,就不可以再用注解配置了,一定要把web.xml中的相关内容删干净才可以。


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容