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

OpenJDK11环境下Jenkins中Apache POI创建SXSSFWorkbook失败问题

Jenkins中SXSSFWorkbook创建静默失败排查方案(OpenJDK11 + POI 4.0.1)
  • 强制输出完整异常信息
    Jenkins环境常因日志级别设置过高吞掉异常,在SXSSFWorkbook创建代码块外层包裹try-catch,捕获所有Throwable并打印完整栈信息:

    try {
        SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(100);
        // 后续业务操作
    } catch (Throwable t) {
        t.printStackTrace();
        System.err.println("SXSSFWorkbook创建失败详情:" + t.getMessage());
    }
    

    必须捕获Throwable而非仅Exception,避免Error级别的异常被遗漏。

  • 校验Jenkins的JDK环境
    确认Jenkins使用的JDK确实是OpenJDK11,避免版本不兼容问题。在构建脚本中添加命令验证:

    java -version
    javac -version
    

    同时检查JAVA_HOME环境变量是否指向正确的OpenJDK11安装目录。

  • 检查POI依赖完整性
    本地IDE的依赖可能全量引入,但Jenkins构建时可能缺失传递依赖。确保构建脚本(Maven/Gradle)中完整引入POI相关组件:
    Maven配置示例:

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.0.1</version>
    </dependency>
    

    查看构建日志,确认所有依赖均成功下载,无版本冲突。

  • 排查磁盘权限与空间问题
    SXSSFWorkbook会生成临时缓存文件,若Jenkins运行用户无临时目录读写权限,或磁盘空间不足,会导致静默失败:

    • 检查java.io.tmpdir指向目录的读写权限
    • 执行df -h确认磁盘剩余空间
    • 可手动指定可写临时目录测试:
      System.setProperty("java.io.tmpdir", "/path/to/accessible/temp");
      SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(100);
      
  • 调整POI版本优化兼容性
    POI 4.0.1对OpenJDK11的支持存在局限性,可尝试升级至POI 4.1.2(该版本修复了多个JDK11兼容问题),确保所有POI相关依赖版本统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:02:29