You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 9+环境引入apache.poi模块出现ResolutionException报错的解决方案咨询

问题根因

这个报错是Java 9+ JPMS(Java平台模块系统)的拆分包限制导致的:你使用的POI 3.x版本未适配模块系统,poi.jar和poi.ooxml.jar两个Jar包都包含org.apache.poi.util包,模块系统不允许两个不同的模块公开同一个包,因此启动时抛出解析异常:

Error occurred during initialization of boot layer
java.lang.module.ResolutionException: Module poi contains package org.apache.poi.util, module poi.ooxml exports package org.apache.poi.util to poi

无需构建工具的可用解决方案
  • 将依赖放到Classpath而非Modulepath
    模块系统对Classpath下的未命名模块没有拆分包限制,直接把两个POI Jar包从Modulepath移到Classpath即可正常运行,是操作成本最低的方案。
  • 使用启动参数补丁合并模块
    启动Java程序时添加--patch-module参数,将poi-ooxml的内容合并到poi模块中,跳过拆分包检查,示例启动命令如下:
    java --patch-module poi=poi-ooxml-3.15.jar 你的主类全限定名
    
    注意把命令里的poi-ooxml版本号替换成你实际使用的版本即可。
  • 合并两个Jar包(你已验证可行)
    分别解压两个POI Jar包到同一个目录,允许重复文件覆盖,再将整个目录重新打包为单个Jar包,将该新Jar添加到Modulepath即可,不存在多模块同包冲突问题。
额外建议

POI 3.x系列已经停止维护多年,后续如果有功能迭代需求,建议升级到POI 4.1.2及以上版本,官方已经完成JPMS适配,原生支持Java 9+模块系统,不会出现这类拆分包冲突。

内容的提问来源于stack exchange,提问作者Nicinic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:18:03