java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
我已关注 this tutorial 使用 servlet 上传文件。
这是文件夹结构(使用 Eclipse 创建的动态项目)。我没有为这个简单的项目使用 maven。我将外部 jar 添加到构建路径。
当我启动 Tomcat 并通过右键单击 Eclipse 中的项目 > 运行 在服务器上部署此应用程序时,我得到
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2499)
at java.lang.Class.getDeclaredFields(Class.java:1811)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:139)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5380)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
... 20 more
请帮我解决这里出了什么问题以及如何解决这个问题?
您还需要将所需的 commons jar 复制到您的 /WEB-INF/lib
文件夹中。
commons-io-2.4.jar
commons-fileupload-1.3.1.jar
原因是仅仅将 jar 依赖项添加到 Eclipse 项目的构建路径并不能使它们在 Tomcat 上自动可用。由于缺少依赖项(未在 lib
文件夹中找到),您的 Web 应用程序部署失败。
我已关注 this tutorial 使用 servlet 上传文件。
这是文件夹结构(使用 Eclipse 创建的动态项目)。我没有为这个简单的项目使用 maven。我将外部 jar 添加到构建路径。
当我启动 Tomcat 并通过右键单击 Eclipse 中的项目 > 运行 在服务器上部署此应用程序时,我得到
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2499)
at java.lang.Class.getDeclaredFields(Class.java:1811)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:139)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5380)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
... 20 more
请帮我解决这里出了什么问题以及如何解决这个问题?
您还需要将所需的 commons jar 复制到您的 /WEB-INF/lib
文件夹中。
commons-io-2.4.jar
commons-fileupload-1.3.1.jar
原因是仅仅将 jar 依赖项添加到 Eclipse 项目的构建路径并不能使它们在 Tomcat 上自动可用。由于缺少依赖项(未在 lib
文件夹中找到),您的 Web 应用程序部署失败。