将Multipart XLSX文件转为Workbook时触发NoSuchMethodError错误求助
问题:Multipart XLSX文件转Workbook时触发NoSuchMethodError异常
将Multipart类型的xlsx文件转换为workbook时发生异常,具体错误信息如下:
错误 - 进入全局异常处理器。处理请求时发生异常:jakarta.servlet.ServletException:
处理器调度失败:java.lang.NoSuchMethodError: 'org.apache.commons.compress.archivers.zip.ZipArchiveEntry
org.apache.commons.compress.archivers.zip.ZipArchivelnputStream.getNextEntry()'
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1104)
排查与解决方法
- 核心原因:这是
commons-compress依赖版本不兼容导致的问题——要么当前依赖版本过低,不存在getNextEntry()方法;要么项目中存在多个不同版本的commons-compress包,类加载时出现冲突。 - 解决步骤:
- 排查依赖冲突:
- Maven项目执行命令:
mvn dependency:tree,查找所有org.apache.commons:commons-compress条目,检查是否有多个版本共存。 - Gradle项目执行命令:
gradle dependencies,同样排查版本冲突情况。
- Maven项目执行命令:
- 统一依赖版本:
- 明确指定兼容的
commons-compress版本(推荐4.0及以上,该方法在这些版本中稳定提供)。 - 若其他依赖(如POI)自带旧版
commons-compress,手动排除冲突依赖。示例Maven配置:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>你的POI版本号</version> <exclusions> <exclusion> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> </exclusion> </exclusions> </dependency>
- 明确指定兼容的
- 重建项目:
- 清理本地仓库中冲突的依赖包,执行
mvn clean install(Maven)或gradle clean build(Gradle)重新构建。
- 清理本地仓库中冲突的依赖包,执行
- 验证最终依赖:确认打包后的项目中仅存在一个指定版本的
commons-compress.jar文件。
- 排查依赖冲突:
内容的提问来源于stack exchange,提问作者pvrforpranavvr
相关产品推荐
相关产品推荐

