java.lang.ClassNotFoundException:org.apache.commons.fileupload.FileItemFactory

bra*_*orm 1 java eclipse tomcat servlets file-upload

我已经按照本教程使用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
Run Code Online (Sandbox Code Playgroud)

请帮助我解决这里出了什么问题以及如何解决此问题?

Rav*_*yal 5

您还需要将所需的通用 jars 复制到您的/WEB-INF/lib文件夹中。

commons-io-2.4.jar
commons-fileupload-1.3.1.jar
Run Code Online (Sandbox Code Playgroud)

原因是仅将jar依赖项添加到Eclipse项目的构建路径中并不能使它们自动在Tomcat上可用。由于缺少相关性(在lib文件夹中找不到),因此Web应用程序的部署失败。