zoukankan      html  css  js  c++  java
  • 启动tomcat时报错:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:A child container failed during start

    可以存在的原因:

    (一)可能原因是在web.xml中配置<servlet-mapping>时,servlet-mapping的属性配置错误(红色出为配置错误):

     <servlet-mapping>
          <servlet-name>coreServlet</servlet-name>
          <url-pattern>/CoreServlet</url-pattern>
      </servlet-mapping>

    正确配置为:

     <servlet-mapping>
          <servlet-name>coreServlet</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>

    其中<url-pattern>xxx</url-pattern>可以为你想要的路径,但是一定要配置正确。

    ps: url-pattern规则:有精确匹配,最长路径匹配,扩展匹配,如果前三条规则都没有匹配到,则会交给第四种叫default servlet处理。

         以”/’开头以”/*”结尾的是用来做路径映射的; “/” 是用来定义default servlet映射的。  以前缀”*.”开头的是用来做扩展映射的。剩下的都是用来定义详细映射的;比如: /aa/bb/cc.action。

        <url-pattern>/</url-pattern>和<url-pattern>/*</url-pattern>的区别:

        <url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url

       <url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等) 

       注意:路径和扩展名匹配无法同时设置,因为这种匹配即属于路径映射,也属于扩展映射,导致容器无法判断。比如下面的三个<url-pattern>都是非法的,如果设置,启动tomcat服务器会报错。

      <url-pattern>/kata/*.jsp</url-pattern>

      <url-pattern>/*.jsp</url-pattern>

      <url-pattern>he*.jsp</url-pattern>

      另外注意:<url-pattern>/aa/*/bb</url-pattern>
      这个是精确匹配,url必须是 /aa/*/bb,这里的*不是通配的含义

    (二)可能由于web.xml的验证中

    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    版本和约束跟tomcat对应的servlet api的版本不匹配。

    解决办法:

    项目-->properties-->project facets:

    选择对应的Dynamic web module的版本。

    修改时如果出现Cannot change version of project facet Dynamic Web Module to xx。xx为要修改成为的版本,如:3.0。

    解决办法:

    找到工作空间中的项目,打开项目找到.settings文件夹打开,编辑两个文件:

    1.org.eclipse.jdt.core.prefs.prefs文件中的:

    eclipse.preferences.version=1
    org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
    org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
    org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
    org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
    org.eclipse.jdt.core.compiler.compliance=1.8
    org.eclipse.jdt.core.compiler.debug.lineNumber=generate
    org.eclipse.jdt.core.compiler.debug.localVariable=generate
    org.eclipse.jdt.core.compiler.debug.sourceFile=generate
    org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
    org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
    org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
    org.eclipse.jdt.core.compiler.source=1.8

    将1.8修改成对应的jdk版本

    2.org.eclipse.wst.common.project.facet.core.xml文件中:

    <?xml version="1.0" encoding="UTF-8"?>
    <faceted-project>
    <runtime name="Apache Tomcat v8.5"/>
    <fixed facet="wst.jsdt.web"/>
    <installed facet="wst.jsdt.web" version="1.0"/>
    <installed facet="java" version="1.8"/>
    <installed facet="jst.web" version="3.0"/>
    </faceted-project>

    将这个<installed facet="java" version="1.8"/>改成对应的java版本号,<installed facet="jst.web" version="3.1"/>改成对应的Dynamic Web module的版本号。

    然后再打开project facet 查看是否修改。

  • 相关阅读:
    YASKAWA电机控制(1)---接线
    Linux使用者管理(2)---账号管理
    OpenCV源码阅读(3)---base.hpp
    机器视觉基础(2)---坐标与矩阵变换
    Linux使用者管理(1)---用户账号
    OpenCV源码阅读(3)---matx.h---学习心得
    OpenCV源码阅读(2)---matx.h---函数的内联实现
    机器视觉基础(1)---投影
    shell编程基础(5)---循环指令
    HTML里 iframe跳转后关闭iframe
  • 原文地址:https://www.cnblogs.com/xiangxinhouse/p/6377842.html
Copyright © 2011-2022 走看看