使用xmlbeans 5.0.3访问Excel遇NoSuchMethodError问题求助
解决xmlbeans 5.0.3与POI兼容导致的NoSuchMethodError错误
问题根源:xmlbeans 5.x版本对API做了大幅调整,
XmlOptions.setUseDefaultNamespace(boolean)方法已被移除或变更,但POI(尤其是5.x系列)依赖的是xmlbeans 3.x版本,二者API不兼容,强行替换会触发找不到方法的错误。具体解决方案:
放弃使用xmlbeans 5.0.3,改用POI官方兼容的xmlbeans版本
POI 5.x系列对应兼容的xmlbeans版本为3.x(比如POI 5.2.5对应xmlbeans 3.2.1,POI 5.2.3对应xmlbeans 3.1.0),不需要手动引入高版本xmlbeans,直接依赖POI自带的版本即可。调整pom.xml配置
先移除你手动添加的xmlbeans 5.0.3依赖,然后确保POI相关依赖使用统一的兼容版本,示例配置如下:<dependencies> <!-- POI核心依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.5</version> </dependency> <!-- POI OOXML 处理Excel 2007+格式 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.5</version> </dependency> </dependencies>如果项目中其他依赖间接引入了高版本xmlbeans,通过
dependencyManagement强制锁定兼容版本:<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>3.2.1</version> </dependency> </dependencies> </dependencyManagement>验证依赖一致性
执行mvn dependency:tree命令,检查输出中xmlbeans的版本是否为POI兼容的3.x版本,确保没有高版本xmlbeans被意外引入。代码无需修改
你使用WorkbookFactory.create(fileInputStream)加载Excel的代码本身没有问题,依赖版本兼容后即可正常运行。
内容的提问来源于stack exchange,提问作者Leder
相关产品推荐
相关产品推荐

