Apache POI JAR版本兼容问题求助:Excel解析报NoSuchFieldError
Apache POI版本兼容问题解决方案
错误原因
你遇到的java.lang.NoSuchFieldError: Factory错误,本质是POI核心组件(poi、poi-ooxml)与poi-ooxml-schemas版本不匹配,高版本POI的类结构、字段定义和低版本的ooxml-schemas不一致,导致运行时找不到对应字段。
兼容版本组合方案
方案一:适配poi-5.2.5的版本组合
poi-5.x系列要求所有相关组件版本严格统一,同时官方更推荐用poi-ooxml-full替代poi-ooxml-schemas(后者仅包含部分XML Schema,容易出现缺失问题):
- 若坚持使用poi-ooxml-schemas:直接替换为
poi-ooxml-schemas-5.2.5,确保和poi、poi-ooxml版本完全一致 - 更优选择:移除poi-ooxml-schemas,引入
poi-ooxml-full-5.2.5,它包含完整的XML Schema定义,无需额外适配
方案二:适配poi-ooxml-schemas-4.1.2的版本组合
如果必须保留poi-ooxml-schemas-4.1.2,需要将poi和poi-ooxml降级为完全匹配的版本:
poi-4.1.2poi-ooxml-4.1.2poi-ooxml-schemas-4.1.2
关键注意事项
- 所有POI相关Jar包的版本必须完全一致,这是避免版本冲突类错误的核心原则
- poi-5.x及以后版本,官方不再推荐单独使用poi-ooxml-schemas,优先选择poi-ooxml-full,能减少大部分版本适配问题
内容的提问来源于stack exchange,提问作者anurag
相关产品推荐
相关产品推荐

