Wildfly环境下用POI从Oracle导出Excel报NoSuchMethodError错误
Oracle数据导出Excel报错
java.lang.NoSuchMethodError解决方案 你遇到的java.lang.NoSuchMethodError: org.apache.poi.hssf.record.BOFRecord.setVersion(S)V错误属于典型的依赖包版本冲突问题,基于POI实现的导出功能在编译时和Wildfly运行时加载的POI jar包版本不匹配,运行时加载的低版本POI包中BOFRecord类没有对应的setVersion方法。
具体解决步骤
- 统一应用内POI组件版本:检查项目
WEB-INF/lib下所有POI相关依赖(包括poi、poi-ooxml、poi-ooxml-schemas、poi-scratchpad等),确保所有组件版本号完全一致,禁止不同版本POI组件混用。 - 适配JDK版本:你当前使用的是JDK1.6,POI最高兼容版本为3.14,不可使用4.x及以上版本的POI,否则会出现版本不兼容问题。
- 排除Wildfly服务器内置POI依赖:Wildfly默认优先加载服务器公共库的依赖,若服务器内置了低版本POI,会覆盖应用内的POI版本,你需要在应用
WEB-INF目录下新增jboss-deployment-structure.xml配置文件,强制排除服务器自带的POI模块,配置参考:
<jboss-deployment-structure> <deployment> <exclusions> <!-- 排除服务器自带的POI依赖 --> <module name="org.apache.poi"/> </exclusions> </deployment> </jboss-deployment-structure>
- 重新部署验证:清理项目编译缓存,重新打包应用后部署到Wildfly,重启服务器后再次测试Excel导出功能即可。
内容的提问来源于stack exchange,提问作者MemZ
相关产品推荐
相关产品推荐

