Apache POI 5.2.3兼容XmlBeans 5.1.1吗?遇方法缺失错误如何解决?
解决POI 5.2.3与XmlBeans版本冲突问题
问题原因
POI 5.2.3依赖的XmlBeans版本并非5.1.1,Maven自动引入的5.1.1版本和POI的要求不匹配,导致org.apache.xmlbeans.XmlOptions.put(Ljava/lang/Object;)V方法找不到。
解决步骤
1. 明确兼容版本
POI 5.2.3官方指定兼容的XmlBeans版本为4.0.0,需强制指定该版本以覆盖Maven自动解析的冲突版本。
2. 修改pom.xml配置
可以通过两种方式确保引入正确的XmlBeans版本:
方式一:直接添加XmlBeans依赖
<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> <!-- 强制指定XmlBeans版本为POI 5.2.3兼容的4.0.0 --> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>4.0.0</version> </dependency>
方式二:用dependencyManagement统一锁定版本
若项目包含多模块,推荐在dependencyManagement中统一锁定版本,避免其他依赖引入冲突:
<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>4.0.0</version> </dependency> </dependencies> </dependencyManagement> <!-- 原有POI依赖 --> <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> </dependencies>
3. 清理并重新构建
执行Maven命令清理旧依赖缓存,重新下载正确版本:
mvn clean install
4. 验证版本
通过以下命令查看依赖树,确认XmlBeans版本为4.0.0:
mvn dependency:tree | grep xmlbeans
内容的提问来源于stack exchange,提问作者Anu
相关产品推荐
相关产品推荐

