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,手动添加进去以后错误解决。

如图:

 

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils_第1张图片

但是在此项目中,yan-web是依赖于yan-common的,yan-common是由maven管理已经导入上述缺少的jar包的,由此猜测到导致打包好的war包中没有commons-io的原因是jar包冲突,如图:

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils_第2张图片

暂未找到解决根本问题的方法,如果有哪位大佬看到此文且知道问题如何解决,望不吝告知。

上述问题解决:

因为yan-web项目为分布式项目,jar包依赖是由最外层yan.pom去统一管理,如图:

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils_第3张图片

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils_第4张图片

我对类似缺包少jar原因猜测是:单个组件之间相互依赖可能会有jar包依赖不完全或者被依赖组件的jar包没有生成出来,导致当前组件依赖的其他组件的依赖jar没有填入进来,由此导致在我使用本项目时经常出现,明明jar包存在,但是还是抛出的缺少某个类,或某个组件jar的异常

解决:

使用父层(yan.pom)的maven管理文件去统一生成各组件jar包,如下图:

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils_第5张图片

生成完成后可以看到各组件的target目录下:

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils_第6张图片Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils_第7张图片Caused by: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils_第8张图片

 

等到生成完成以后,之前的关于mabatis反向生成使用自定义插件(序列化example类)时,抛异常:找不到缺失的自定义插件jar的问题,以及上面明明有commons-io的依赖却依然抛出找不到相关类的异常就全部解决了。

活到老学到老,能解决一个困扰许久的问题心情实在是非常舒畅!!!哈哈哈!!!

你可能感兴趣的:(yan-master,error)