You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

POI依赖报错:org.apache.poi.hssf.usermodel包多模块可访问求排查

解决POI模块访问冲突问题

老哥,这个问题我之前帮人排查过好多次,本质是Java模块系统(JPMS)的重复包冲突,给你拆解下原因和解决办法:

问题根源

你把poi.jarpoi-examples.jar都加到了模块路径里,但这两个JAR包都包含了org.apache.poi.hssf.usermodel这个包——poi-examples是POI的示例代码包,它本身依赖核心的poi.jar,还重复打包了核心包的部分类,导致Java模块系统不知道该优先加载哪个模块里的这个包,所以抛出了这个错误。

具体解决步骤

  • 移除多余的依赖包:直接从你的模块路径里删掉poi-examples.jar,业务代码完全不需要这个示例包,留着只会添乱。
  • 检查核心依赖完整性:确保你的模块路径里只保留必要的POI核心依赖,比如:
    • poi.jar(处理xls格式的核心包)
    • 如果需要处理xlsx,还要加poi-ooxml.jar
    • 配套的依赖包(比如commons-codec.jarcommons-collections4.jar这类,根据POI版本要求添加)
  • 清理IDE缓存并同步:有时候IDE会缓存旧的依赖状态,比如IntelliJ可以通过File -> Invalidate Caches / Restart清理,Eclipse可以用Project -> Clean,之后重新同步项目依赖。
  • 如果用构建工具(Maven/Gradle):检查你的依赖配置,确保只引入核心的poi依赖,不要误加poi-examples。比如Maven的正确依赖配置应该是:
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>你的POI版本号</version>
    </dependency>
    

按照上面的步骤操作,应该就能解决这个冲突问题了。

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

火山引擎 最新活动