Java web 中文件上传时部署失败,后台报错:Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.
昨天在学习文件上传时碰到了一个恶心我好久的问题,还好今天早上成功解决。最终我是从这篇博客找到了答案,链接附上:。
一.问题截图:
项目直接部署失败,昨天搞了很久仍未解决,今早静下心来重新建立了一个maven项目打算重写一遍结果还是部署失败;突然想到是不是我搜索的方式有问题,于是我换了几种问题描述搜索,果然在开头的博客中找到了答案。所以对像我这种新手来说搜索问题时一定要记得多换几种描述,这样更容易得到答案。
二.原因:
配置上传下载文件的大小的时候就会造成java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
三.问题解决:
1.查看自己的依赖是否导入
<dependency>
<groupId>commons-fileuploadgroupId>
<artifactId>commons-fileuploadartifactId>
<version>1.4version>
dependency>
<dependency>
<groupId>commons-iogroupId>
<artifactId>commons-ioartifactId>
<version>2.11.0version>
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目录(因为我已经试过了,缺一不可)。