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;可以降低这种错误率。
本文作者:wshuanglin
本文链接:https://www.cnblogs.com/hectorlin/p/16062092.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步