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

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

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

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

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

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

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

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

示例:<scope>provided</scope>

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启动异常:子容器启动失败(a child container failed during start)的文章就介绍到这了,更多相关tomcat异常子容器启动失败内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • tomcat异常解决(Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)

    1.情景展示 tomcat 日志时不时会报出如下异常信息,到底是怎么回事? java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986     at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine

  • 一次因信号量引发的tomcat异常退出解决

    近期在玩大数据.有个朋友找过来,说他线上的tomcat会莫名其妙的退出,表示非常苦恼,请我帮看看.每次他发现退出了,都通过腾讯云的WEB控制台登录,启动tomcat. 本着助人为乐(shao kao hao chi)的精神,我连上去开始分析.首先肯定是看tomcat的日志,看看有没有记录到相关信息,是什么途径退出的. 从日志上看,tomcat收到了退出请求,并按照要求关闭容器.那么是否可以认为是有人执行了shutdown.sh呢?并不能.执行了shutdown脚本的关闭日志是这样的. 与其相关的

  • SpringBoot项目打包发布到外部tomcat(出现各种异常的解决)

    先说遇到问题的情景: 初次尝试使用spring boot框架写了个小web项目,在Intellij IDEA中能正常启动运行.使用maven 运行install,生成war包,发布到本机的tomcat下,出现异常,主要的异常信息是  .......LifeCycleException.经各种搜索,找到答案. spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢? 1. 既然需要

  • tomcat加载jar异常问题的分析与解决

    现象描述: 项目使用springboot启动一个web项目,在启动阶段看到console中出现了异常"1.10.3-1.4.3\hdf5.jar  系统找不到指定的文件",虽然这些异常不影响项目的正常运行,但作为一个严谨的技术人员,看到这些异常就像见到仇人一样,一定要除之而后快. java.io.FileNotFoundException: D:\.m2\repository\org\bytedeco\javacpp-presets\hdf5-platform\1.10.3-1.4.3

  • Tomcat常见异常及解决方案代码实例

    公司项目,开发语言为java,中间件为Tomcat,运行过程中,从Tomcat出现了一些异常,现将异常及解决办法记录如下,仅供参考.(不断在补充中.......) 异常一: 1.日志内容 org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be l

  • tomcat6下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法

    1.在tomcat6.0下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法 在tomcat6.0下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好的原因. 具体的原因就是: 在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse res

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

    在学习过程中,出现这个问题,上网查了一下,总结以下几种解决方案,并找出自己的问题. 1.没有清理之前maven项目的历史. 解决方法:执行clean命令,然后重新启动项目. 操作:添加maven helper插件后,右键→run maven→clean ps:关于maven项目历史是啥我不太了解. 2.pom.xml文件中servlet-api依赖导入问题. 解决方法:在依赖中添加<scope>标签,内容为provided. 示例:<scope>provided</scope

  • springboot 项目容器启动后如何自动执行指定方法

    目录 springboot 项目容器启动后自动执行指定 springboot 容器及启动过程 问题1:为什么要启动父子两个容器? 问题2:在什么时候启动父容器? 问题3:父容器和子容器的区别? 问题4:怎么保证父容器启动过程中 问题5:容器实际通过什么来管理bean springboot 项目容器启动后自动执行指定 我们需要写一个class去让它实现ApplicationRunner,然后重写它的run方法就行了,注意类加上@Component注解 注意:这个class需要写在和Applicat

  • 如何解决docker容器启动失败

    问题:电脑重启之后,docker里面的mysql容器重启不了,不知道是什么原因 上面的步骤:如果sudo docker start name 能重新启动,也就是输入:docker ps 能看到自己所需要的服务已经开启,那就不需要再进行下面的步骤了,如果刚好像上面那样,那就接着看下文: 解决办法:删除启动不了的容器,然后再重新运行镜像. 注意此时的容器名已经变为mysql了,为关闭状态,再运行镜像时还是运行不了,但此时再启动镜像时就可以启动了 内容补充 1.查看docker占用的挂载点 cat /

  • spring boot容器启动流程

    一.前言 spring cloud大行其道的当下,如果不了解基本原理那么是很纠结的(看见的都是 约定大于配置 ,但是原理呢?为什么要这么做?).spring cloud是基于spring boot快速搭建的,今天咱们就看看spring boot容器启动流程.(本文不讲解如何快速启动spring boot,那些直接官方看即可, 官网文档飞机票 ) 二.容器启动 spring boot一般是 指定容器启动main方法,然后以命令行方式启动Jar包 ,如下图: @SpringBootApplicati

  • 传统tomcat启动服务与springboot启动内置tomcat服务的区别(推荐)

    spring整合springmvc spring整合springmvc中web.xml配置如下,tomcat在启动过程中会加载web.xml中的内容,ContextLoaderListener实现了tomcat里面的ServletContextListener接口,所以在tomcat容器启动过程通过ContextLoaderListener来进行spring容器的初始化操作,并将classpath:spring/applicationContext-*.xml指定下的spring配置文件加载,该

  • 详解Spring IOC 容器启动流程分析

    使用 Spring 时,XML 和注解是使用得最多的两种配置方式,虽然是两种完全不同的配置方式,但对于 IOC 容器来说,两种方式的不同主要是在 BeanDefinition 的解析上.而对于核心的容器启动流程,仍然是一致的. AbstractApplicationContext 的 refresh 方法实现了 IOC 容器启动的主要逻辑,启动流程中的关键步骤在源码中也可以对应到独立的方法.接下来以  AbstractApplicationContext 的实现类  ClassPathXmlAp

  • 启动异常invalid constant type:15的解决方案

    最近一个项目测试的时候,需要进行多个tomcat集群测试. 我本地用了一个新的tomcat, 然后把项目打好的war包扔到tomcat里面进行运行. 启动时出现一个异常:java.io.IOException: invalid constant type: 15 . 项目启动环境:jdk1.8 .tomcat8  网上查阅资料,说是引用dubbo 2.8版本时,自动引用了javassist 3.15.0版本. 导致和jdk的javassist冲突.   查看maven 的pom.xml文件,有引

  • 详解docker nginx 容器启动挂载到本地

    首先nginx容器内部的结构: 进入容器: docker exec -it b511b6049f57 bash 查看容器的结构目录:其实每一个容器就相当于一个独立的系统. root@b511b6049f57:/# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr nginx的结构目录在容器中: 日志位置:/var/log/nginx/ 配置文件位置:/etc/nginx/

  • SpringBoot 如何添加容器启动的初始化逻辑的操作方法

    背景 传统 SpringMVC 项目中,我们可以定义容器初始化 Servlet ,然后在 web.xml 配置该 Servlet ,指定 load-on-startup 就可以在容器启动后,执行一些系统的初始化逻辑.比如设置全局资源文件路径.加载系统定时任务.数据初始化等. 技术转换到 SpringBoot 的时候,该在哪里添加应用初始化的代码呢? 如果初始化逻辑中,有一些普通类,需要通过 Spring 的 ApplicationContext 的 getBean 获取依赖属性,如何保证 Spr

  • 详解Shell脚本控制docker容器启动顺序

    1.遇到的问题 在分布式项目部署的过程中,经常要求服务器重启之后,应用(包括数据库)能够自动恢复使用.虽然使用docker update --restart=always containerid能够让容器自动随docker启动,但是并不能保证是在数据库启动之后启动,如果数据库未启动,那么将导致应用启动失败;网上还有一种解决方法是通过docker-compose容器编排来控制启动顺序,这个博主研究的比较少. 2.解决思路 使用Shell脚本来控制,思路大致如下 探测数据库端口来检验数据库是否启动成

随机推荐