首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我在使用tomcat7配置动态web项目时收到'org.apache.catalina.LifecycleException:无法启动组件‘错误

我在使用tomcat7配置动态web项目时收到'org.apache.catalina.LifecycleException:无法启动组件‘错误
EN

Stack Overflow用户
提问于 2014-09-11 22:05:27
回答 1查看 3.4K关注 0票数 2

这是我的web.xml

代码语言:javascript
运行
复制
    <?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>VideoPlayer</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>UploadServlet</servlet-name>
    <servlet-class>com.videoplayer.controller.UploadServlet</servlet-class>

     </servlet>

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

    </servlet-mapping>

    </web-app>

这是我的Servlet:

代码语言:javascript
运行
复制
      package com.videoplayer.controller;


    import java.io.File;

    import java.io.IOException;

    import java.util.Iterator;

    import java.util.List;



    import javax.servlet.ServletException;

    import javax.servlet.annotation.WebServlet;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;



    import org.apache.commons.fileupload.FileItem;

    import org.apache.commons.fileupload.FileUploadException;

    import org.apache.commons.fileupload.disk.DiskFileItemFactory;

    import org.apache.commons.fileupload.servlet.ServletFileUpload;



    /**

     * Servlet implementation class UploadServlet

     */

    @WebServlet("/UploadServlet")

    public class UploadServlet extends HttpServlet {

        private static final long serialVersionUID = 1L;



        /**

         * @see HttpServlet#HttpServlet()

         */

        public UploadServlet() {

            super();

            // 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

        }



        /**

         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

         */

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            // TODO Auto-generated method stub

            boolean isMultiPart = ServletFileUpload.isMultipartContent(request);



            if(isMultiPart)

            {

                DiskFileItemFactory factory = new DiskFileItemFactory();

                ServletFileUpload upload = new ServletFileUpload(factory);



                try {

                    List<FileItem> items = upload.parseRequest(request);



                    Iterator<FileItem> it = items.iterator();



                    while(it.hasNext())

                    {

                        FileItem item = it.next();



                        if(!(item.isFormField()))

                        {

                            String fieldname = item.getFieldName();

                            String filename = item.getName();

                            long fileSize = item.getSize();



                            System.out.println("Field Name is :"+fieldname);

                            System.out.println("File Name is :"+filename);

                            System.out.println("File Size is :"+fileSize);



                            String filepath = "C:"+File.separator;



                            File video = new File(filepath);



                            item.write(video);

                        }

                    }

                } catch (FileUploadException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                } catch (Exception e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            }

        }



    }

我观察到,每当我创建任何servlet映射时,tomcat7都会抛出这个异常。我不知道Web.xml出了什么问题。我尝试删除servlet中的@WebServlet,但结果仍然是same...Could。有人能帮我解决这个问题吗??提前谢谢:)

下面是完整的StackTrace:

代码语言:javascript
运行
复制
    SEVERE: A child container failed during start

    java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/VideoPlayer]]

        at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)

        at java.util.concurrent.FutureTask.get(Unknown Source)

        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)

        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)

        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)

        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

        at java.util.concurrent.FutureTask.run(Unknown Source)

        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(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[/VideoPlayer]]

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

        ... 7 more

    Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

        at java.lang.Class.getDeclaredFields0(Native Method)

        at java.lang.Class.privateGetDeclaredFields(Unknown Source)

        at java.lang.Class.getDeclaredFields(Unknown Source)

        at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)

        at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:263)

        at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:142)

        at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67)

        at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405)

        at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881)

        at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376)

        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)

        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        ... 7 more

    Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadException

        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)

        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)

        ... 21 more

    Sep 12, 2014 9:47:02 AM org.apache.catalina.core.ContainerBase startInternal

    SEVERE: A child container failed during start

    java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]

        at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)

        at java.util.concurrent.FutureTask.get(Unknown Source)

        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)

        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        at org.apache.catalina.startup.Catalina.start(Catalina.java:691)

        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:322)

        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)

    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)

        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)

        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

        at java.util.concurrent.FutureTask.run(Unknown Source)

        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

        at java.lang.Thread.run(Unknown Source)

    Caused by: org.apache.catalina.LifecycleException: A child container failed during start

        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)

        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        ... 7 more

    Sep 12, 2014 9:47:02 AM org.apache.catalina.startup.Catalina start

    SEVERE: The required Server component failed to start so Tomcat is unable to start.

    org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

        at org.apache.catalina.startup.Catalina.start(Catalina.java:691)

        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:322)

        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)

    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        ... 7 more

    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        ... 9 more

    Caused by: org.apache.catalina.LifecycleException: A child container failed during start

        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)

        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

        ... 11 more

    Sep 12, 2014 9:47:02 AM org.apache.coyote.AbstractProtocol pause

    INFO: Pausing ProtocolHandler ["http-bio-9080"]

    Sep 12, 2014 9:47:02 AM org.apache.coyote.AbstractProtocol pause

    INFO: Pausing ProtocolHandler ["ajp-bio-8009"]

    Sep 12, 2014 9:47:02 AM org.apache.catalina.core.StandardService stopInternal

    INFO: Stopping service Catalina

    Sep 12, 2014 9:47:02 AM org.apache.coyote.AbstractProtocol destroy

    INFO: Destroying ProtocolHandler ["http-bio-9080"]

    Sep 12, 2014 9:47:02 AM org.apache.coyote.AbstractProtocol destroy

    INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
EN

回答 1

Stack Overflow用户

发布于 2014-09-12 22:22:04

我认为问题的根源是这样的:

代码语言:javascript
运行
复制
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadException

这意味着在类路径上找不到commons-fileupload jar,或者有两个冲突的jar版本。确保jar包含在webapp的WEB-INF/lib目录下。还要确保类路径上只有该jar的一个版本,并且在Tomcat中部署的jar版本与用于编译应用程序的版本相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25789592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档