java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:启动失败

时间:2016-12-12 07:04:07

标签: java apache tomcat eclipse-neon

当我尝试运行我的项目时,它会显示此类错误。

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Temp]]
  at java.util.concurrent.FutureTask.report(Unknown Source)
  at java.util.concurrent.FutureTask.get(Unknown Source)
  at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
  at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
  at java.util.concurrent.FutureTask.run(Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
  at java.lang.Thread.run(Unknown Source) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Temp]]
  at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
  ... 6 more 
Caused by: java.lang.IllegalArgumentException: The servlets named [MyServlet] and [temp.MyServlet] are both mapped to the url-pattern [/MyServlet] which is not permitted
  at org.apache.tomcat.util.descriptor.web.WebXml.addServletMappingDecoded(WebXml.java:327)
  at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:320)
  at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2389)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2066)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1952)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1946)
  at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1153)
  at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775)
  at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
  at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5077)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  ... 6 more

Dec 12, 2016 12:53:47 PM org.apache.catalina.core.ContainerBase startInternal SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: A child container failed during start  at java.util.concurrent.FutureTask.report(Unknown Source) 
  at java.util.concurrent.FutureTask.get(Unknown Source)
  at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
  at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:655) 
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495) Caused by: org.apache.catalina.LifecycleException: A child container failed during start
  at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:948)
  at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
  at java.util.concurrent.FutureTask.run(Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
  at java.lang.Thread.run(Unknown Source)

Dec 12, 2016 12:53:47 PM org.apache.catalina.startup.Catalina start SEVERE: The required Server component failed to start so Tomcat is unable to start. org.apache.catalina.LifecycleException: A child container failed during start  
  at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:948)
  at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:655) 
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
  1. IDE:Ecilpse-neon
  2. 服务器:Tomcat v9.0
  3. Java:1.8.0(也在Tomcat中)
  4. 添加了jar:

    • 卡塔利娜-4.1.31

    • 卡塔利娜-ANT-6.0.37

    • 卡塔利娜-HA-6.0.13

    • 卡塔利娜-部落

    • 的javax.servlet-3.0

    • servlet的API-2.5-6.1h.6

  5. MyServlet.java

    //@WebServlet("/MyServlet")
    public class MyServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        /**
         * Default constructor. 
         */
        public MyServlet() {
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            PrintWriter out = response.getWriter();
            out.print("Hello..............");
            response.getWriter().append("Served at: ").append(request.getContextPath());
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    

    的web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>Temp</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    
      <servlet>
      <servlet-name>MyServlet</servlet-name>
      <servlet-class>temp.MyServlet</servlet-class>
    
      </servlet>
      <servlet-mapping>
      <servlet-name>MyServlet</servlet-name>
      <url-pattern>/MyServlet</url-pattern>
      </servlet-mapping>
    </web-app>
    

    }

    我该如何解决这些错误?

3 个答案:

答案 0 :(得分:1)

在我的场景中,在更改其中一个servlet中的url模式后,我正在使用@WebServlet Annotation和 两个不同的servlet 的相同url模式映射,Tomcat为我成功启动: - )

答案 1 :(得分:0)

我已经关注java.lang.IllegalArgumentException: The servlets named [X] and [Y] are both mapped to the url-pattern [/url] which is not permitted这个并且它有效!!!!!!!!

  

您似乎已经混合了@WebServlet注释和web.xml   基于配置。

     

我怀疑你是否使用“Create Servlet”向导创建了一个Servlet   用url-pattern创建web.xml条目,然后添加一个   @WebServlet注释,它复制了你可能放入的任何内容   web.xml中。

     

你应该使用其中一个,而不是两个。从中删除映射   web.xml并继续只使用@WebServlet注释。

答案 2 :(得分:-2)

当我从Myservlet.java中删除@WebServlet注释后,它已经工作了。但我无法理解为什么它不能与@WebServlet一起使用