Apache POI升级5.2.3后报错NestedServletException: org.apache.commons.io.IOUtils.byteArray(I)[B
升级脚手架(springboot版本及一系列的pom依赖)之后提示报错NoSuchMethodError,
·
问题起因
升级脚手架(springboot版本及一系列的pom依赖)之后提示报错NoSuchMethodError,
Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.byteArray(I)[B
at org.apache.poi.util.IOUtils.peekFirstNBytes(IOUtils.java:139)
at org.apache.poi.poifs.filesystem.FileMagic.valueOf(FileMagic.java:209)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:143)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:175)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:130)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:319)
排查步骤
-
查看错误信息找到报错方法是在IOUtils.java:139 的peekFirstNBytes方法,但是报错原因是org.apache.commons.io.IOUtils.byteArray没有该方法,
-
搜索后发现IOUtils文件存在多个;

-
poi5.2.3对应的commons-io版本是2.10.0,该包中存在byteArray方法,所以应该是存在commons-io冲突的包后,去找到poi.util.IOUtils的方法;
-
通过依赖查找发现项目中存在org.apache.commons.io:1.3.2的包;
-
将冲突的包删除后即可正常不报错;
更多推荐




所有评论(0)