人生到处知何似,应似飞鸿踏雪泥。|

wshuanglin

园龄:2年11个月粉丝:0关注:2

Java web 中文件上传时部署失败,后台报错:Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadException ;org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[manageApp]时发生异常...

  昨天在学习文件上传时碰到了一个恶心我好久的问题,还好今天早上成功解决。最终我是从这篇博客找到了答案,链接附上:解决java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory - 牧の风 - 博客园 (cnblogs.com)

一.问题截图:

   项目直接部署失败,昨天搞了很久仍未解决,今早静下心来重新建立了一个maven项目打算重写一遍结果还是部署失败;突然想到是不是我搜索的方式有问题,于是我换了几种问题描述搜索,果然在开头的博客中找到了答案。所以对像我这种新手来说搜索问题时一定要记得多换几种描述,这样更容易得到答案。

二.原因:

  配置上传下载文件的大小的时候就会造成java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory

三.问题解决:

  1.查看自己的依赖是否导入

复制代码
        <!-- 文件上传工具 -->
        <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>
复制代码

  这里想说一下commons-fileupload这个依赖我导的是最新的1.4版本,这个依赖好像自带了一个commons-io,所以其实只需要导入第一个依赖就好,不然可能会有影响。

   2.如果你的依赖导入正确,就在你的WEB-INF目录下建一个lib目录,并将这两个jar包拷贝进去。

   这两个jar包的下载地址:Maven Repository: commons-fileupload » commons-fileupload » 1.4 (mvnrepository.com)  Maven Repository: commons-io » commons-io » 2.11.0 (mvnrepository.com)

我这里下载的是目前的比较新的版本,依赖可以只用导commons-fileupload,但是这两个jar包都得拷贝进lib目录(因为我已经试过了,缺一不可)。

  3.这里问题应该已经解决了,如果还不能的话就查看自己的web.xml文件;servlet的注册是否有问题(名字,有无 /). 也可以使用@WebServlet注解,避免配置web.xml;可以降低这种错误率。

解决java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory - 牧の风 - 博客园 (cnblogs.com)

本文作者:wshuanglin

本文链接:https://www.cnblogs.com/hectorlin/p/16062092.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wshuanglin  阅读(519)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起