【问题标题】:java.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileItemFactoryin Spring MVCjava.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileItemFactoryin Spring MVC
【发布时间】:2025-10-08 12:50:01
【问题描述】:

我正在尝试构建一个具有文件上传功能的简单 Spring MVC Web App。我收到以下错误:

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory

经过快速搜索,所有答案都指向缺少依赖项,但在我的情况下似乎并非如此:

我在 pom.xml 中包含了以下代码:

<dependencies> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> </dependencies> commons.io-2.4.jarcommons.fileupload-1.3.1.jar 添加到lib 文件夹中。

我发现一个有趣的事情是每当我删除代码时:

   <bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize">
        <value>10000000</value>
    </property>
    <property name="maxInMemorySize">
        <value>10000000</value>
    </property>
  </bean>

网络应用运行良好(当然我也删除了文件上传表单。)

【问题讨论】:

  • 该类肯定存在于 commons-fileupload-1.3.1 中,所以我认为您需要仔细检查您的部署以确保 jar 的存在。
  • @SteveC 非常感谢!!!问题是部署中缺少 jar 文件。我不太明白为什么jar文件没有自动包含在部署中(我使用的是intelliJ,我认为文件夹lib中的jar文件应该自动包含在工件中)因为我已经将它们包含在依赖项中并且它们是在 lib 文件夹中。我怎么能接受你的回答?

标签: spring maven spring-mvc


【解决方案1】:

如果您访问 Maven Central Repository 并输入搜索词:

fc:org.apache.commons.fileupload.FileItemFactory

然后将列出包含该类的每个可用的已发布工件。

您会在该列表中找到 commons-upload 1.3.1。

因此,您需要仔细检查您的部署以确保 jar 存在。

提示:使用 fc: 在 Maven Central 中找到包含特定类的 jar。

【讨论】:

    【解决方案2】:

    尝试更新您的 jar 版本,例如:

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>2.0.0-SNAPSHOT</version>
        </dependency>
    

    我们在 Apache 和 mvnrepository.com 上找不到 1.3 以上的版本,但你可以试试这个:https://repository.jboss.org/commons-fileupload/commons-fileupload/2.0.0-SNAPSHOT/

    事实上,我也遇到了同样的问题,现在在 SpringMVC 框架下使用 2.0 版本可以正常工作。

    【讨论】:

    • 自 1.0 发布之前,该类就存在于 commons-fileupload 中。更新版本不太可能有帮助
    • 感谢您的回复。其实commons-fileupload最新版本是1.3.1