POI4.1.2读取Excel文件报ExceptionInInitializerError如何解决
问题修复方案
根本原因
你遇到的报错是典型的POI OOXML运行时依赖缺失问题:
- 编译阶段只依赖poi、poi-ooxml中的公开API,因此编译可以正常通过
- 运行时解析XLSX的主题、样式等内部结构时,需要用到
poi-ooxml-schemas包中的XMLBeans生成类,你配置的CLASSPATH仅包含了Maven仓库根目录,Java不会自动递归加载目录下所有jar包,因此找不到对应的类。
修复步骤
方法1:使用Maven管理依赖(推荐)
如果你的项目使用Maven,直接执行以下操作:
- 执行命令导出所有依赖到指定目录:
mvn dependency:copy-dependencies -DoutputDirectory=lib
- 运行时指定类路径为当前目录加lib下所有jar:
java -cp ".:lib/*" ReadExcel
方法2:手动管理依赖
如果没有使用Maven,手动补全所需依赖即可:
- 下载POI 4.1.2版本配套的两个缺失依赖:
poi-ooxml-schemas-4.1.2.jar、xmlbeans-3.1.0.jar - 将所有依赖jar(poi、poi-ooxml、poi-ooxml-schemas、xmlbeans)放在项目同一目录
- 运行时指定完整类路径:
java -cp ".:./*" ReadExcel
注意事项
不要使用和POI版本不匹配的xmlbeans版本,POI 4.1.2必须配套3.x版本的xmlbeans,使用4.x及以上版本的xmlbeans会出现新的兼容问题。
内容的提问来源于stack exchange,提问作者showkey
相关产品推荐
相关产品推荐

