apache.poi XSSFWorkbook创建失败,空指针

在使用apache.poi导出excel文件时, debug到new XSSFWorkbook();就报空指针(用HSSFWorkbook没问题),怀疑是以来缺失或类加载导致,排查pom.xml也没问题,依赖都在且没有传递依赖。

然后分析可能xmlbeans有问题,XSSFWorkbook( .xlsx)底层依赖 XML 解析库 xmlbeans,而 HSSFWorkbook( .xls)只依赖基础 POI,不涉及 XML。当 JVM 尝试初始化 XSSFWorkbook 时,会静态加载一些类,如 org.apache.xmlbeans.XmlObject,如果这些类不存在或加载失败,某些内部初始化代码可能返回 null,后续调用就会抛出 NullPointerException,而不是 NoClassDefFoundError。所以检查xmlbeans是否真的存在:

mvn dependency:tree | findstr "xmlbeans"

发现有多个版本,然后在dependencyManagement中显式加入指定版本的xmlbeans,确保只有一个版本后,再次运行,无报错。

XML 复制代码
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>5.0.3</version>
        </dependency>
    </dependencies>
</dependencyManagement>
相关推荐
鹿衔`6 小时前
Apache Doris 2.1.10 集群部署与 Paimon 数据湖集成实战文档
apache·doris·paimon
鹿衔`7 小时前
Apache Doris 4.0.1 集群部署与 Paimon 数据湖集成实战文档
flink·apache·doris·paimon
SelectDB技术团队1 天前
面向 Agent 的高并发分析:Doris vs. Snowflake vs. ClickHouse
数据仓库·人工智能·科技·apache·知识图谱
初願致夕霞1 天前
C++文件压缩及解压缩小程序的实现
c++·小程序·apache
小小8程序员1 天前
Apache Doris的部署
apache
Rover.x2 天前
head table is mandatory
java·apache
SelectDB2 天前
面向 Agent 的高并发分析:Doris vs. Snowflake vs. ClickHouse
数据库·apache·agent
微学AI2 天前
时序数据库的核心概念与使用指南:Apache IoTDB 深度剖析与部署实践
apache·时序数据库·iotdb
写代码的【黑咖啡】3 天前
Apache Flink SQL 入门与常见问题解析
sql·flink·apache