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

Weblogic环境下升级Apache POI至5.0.0后生成Excel报错求助

解决方案:Weblogic下POI 5.0.0初始化SharedStringsTable失败

问题根源

Weblogic服务器自带旧版本的xmlbeans类库,与POI 5.0.0依赖的新版本xmlbeans(3.x系列)存在类加载冲突,导致org.apache.poi.xssf.model.SharedStringsTable无法正常初始化。

具体解决步骤

1. 配置Weblogic类加载优先级(核心方案)

在项目WEB-INF/weblogic.xml中添加配置,强制Weblogic优先加载应用自身的依赖包,而非服务器自带的旧版本:

<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.apache.xmlbeans.*</package-name>
            <package-name>org.apache.poi.*</package-name>
            <package-name>org.openxmlformats.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>

该配置会让Weblogic优先加载应用WEB-INF/lib目录下的上述包类,彻底规避服务器自带库的冲突。

2. 确保依赖版本兼容且无冲突

在build.gradle中显式指定POI依赖的xmlbeans版本,并排除可能的重复依赖:

// POI核心依赖
implementation('org.apache.poi:poi:5.0.0') {
    exclude group: 'xml-apis', module: 'xml-apis'
}
// POI OOXML依赖
implementation('org.apache.poi:poi-ooxml:5.0.0') {
    exclude group: 'xmlbeans', module: 'xmlbeans'
}
// 显式引入POI 5.0.0兼容的xmlbeans版本
implementation 'org.apache.xmlbeans:xmlbeans:3.1.0'

POI 5.x系列依赖xmlbeans 3.x版本,显式引入可避免依赖传递带来的版本不一致问题。

3. 清理Weblogic缓存并重启服务器

Weblogic的临时缓存可能残留旧类文件,导致新依赖无法生效:

  • 停止Weblogic服务
  • 删除服务器domain目录下的tmp和cache文件夹
  • 重启Weblogic后重新部署应用

4. 验证应用打包完整性

检查生成的war包,确保WEB-INF/lib目录下包含以下关键jar包:

  • poi-5.0.0.jar
  • poi-ooxml-5.0.0.jar
  • xmlbeans-3.1.0.jar
  • poi-ooxml-schemas-4.1.2.jar(POI 5.0.0依赖的OOXML schema包)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:05:24