JDK从1.8降级至1.7后POI报Unsupported major.minor version 52.0如何解决
问题根因
org/apache/poi/ss/usermodel/CellStyle : Unsupported major.minor version 52.0
该错误表示你当前引入的Apache POI依赖包是基于JDK 1.8编译生成的(类文件版本号52.0对应JDK 1.8),而你的运行环境是JDK 1.7,低版本JVM无法加载高版本编译的类文件,因此触发类加载失败。
解决方法
- 方案1:降级Apache POI到支持JDK 1.7的版本
POI从4.0版本开始最低要求JDK 1.8,所以你需要将POI所有相关依赖(包括poi、poi-ooxml、poi-ooxml-schemas等)的版本统一降到3.17及以下,3.17是最后一个支持JDK 1.7的POI稳定版本。
如果你用Maven管理依赖,修改pom.xml中对应依赖的version即可,示例配置:
降级后清理项目缓存重新编译即可解决类版本不兼容问题。<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> - 方案2:升级运行环境到JDK 1.8
如果业务不强制要求使用JDK 1.7,直接将运行环境的JDK版本升级到1.8即可兼容当前的POI依赖包,无需修改代码和依赖配置。
注意事项
- 所有POI相关依赖的版本必须保持一致,避免出现不同版本类冲突的问题
- 降级POI到3.17后,需要检查代码中是否使用了4.0及以上版本才新增的API,如果有需要替换为3.17版本支持的等价实现
内容的提问来源于stack exchange,提问作者jambaek
相关产品推荐
相关产品推荐

