问题起因

升级脚手架(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)

排查步骤

  1. 查看错误信息找到报错方法是在IOUtils.java:139 的peekFirstNBytes方法,但是报错原因是org.apache.commons.io.IOUtils.byteArray没有该方法,

  2. 搜索后发现IOUtils文件存在多个;
    在这里插入图片描述

  3. poi5.2.3对应的commons-io版本是2.10.0,该包中存在byteArray方法,所以应该是存在commons-io冲突的包后,去找到poi.util.IOUtils的方法;

  4. 通过依赖查找发现项目中存在org.apache.commons.io:1.3.2的包;

  5. 将冲突的包删除后即可正常不报错;

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐