Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils
在使用yan-master项目过程中,调用开发者的文件上传方法:fileUpload();
抛出异常:
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils
遍寻原因无果,看了很多帖子猜测可能是jar包冲突,然而并没有找到解决方法。
最后发现是yan-web的war包lib文件夹中中有commons-fileupload,但是没有commons-io,手动添加进去以后错误解决。
如图:
但是在此项目中,yan-web是依赖于yan-common的,yan-common是由maven管理已经导入上述缺少的jar包的,由此猜测到导致打包好的war包中没有commons-io的原因是jar包冲突,如图:
暂未找到解决根本问题的方法,如果有哪位大佬看到此文且知道问题如何解决,望不吝告知。
上述问题解决:
因为yan-web项目为分布式项目,jar包依赖是由最外层yan.pom去统一管理,如图:
我对类似缺包少jar原因猜测是:单个组件之间相互依赖可能会有jar包依赖不完全或者被依赖组件的jar包没有生成出来,导致当前组件依赖的其他组件的依赖jar没有填入进来,由此导致在我使用本项目时经常出现,明明jar包存在,但是还是抛出的缺少某个类,或某个组件jar的异常
解决:
使用父层(yan.pom)的maven管理文件去统一生成各组件jar包,如下图:
生成完成后可以看到各组件的target目录下:
等到生成完成以后,之前的关于mabatis反向生成使用自定义插件(序列化example类)时,抛异常:找不到缺失的自定义插件jar的问题,以及上面明明有commons-io的依赖却依然抛出找不到相关类的异常就全部解决了。
活到老学到老,能解决一个困扰许久的问题心情实在是非常舒畅!!!哈哈哈!!!