问题描述:
导出Excel时将Poi jar包升级为4.x时,启动应用报以下错误
Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
at org.apache.poi.ooxml.POIXMLTypeLoader.<clinit>(POIXMLTypeLoader.java:43)
at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:86)
... 12 more
解决思路:
查看类org.apache.xmlbeans.XmlOptions,搜索发现这个类确实没有setEntityExpansionLimit()这个方法,估计是版本不匹配(使用的是2.x版本的xmlbeans)不知道是因为之前使用的旧版POI的残留缓存导致idea识别问题还是官方poi自己的依赖搞错了
解决方案:在poi的引入中手动排除xmlbeans依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
maven Reimport一下依赖,再次执行,问题就解决了。
在将ApachePOI包从低版本升级到4.x时,启动应用出现异常。原因是新版POI要求的xmlbeans版本与实际引入的版本不匹配,导致找不到setEntityExpansionLimit()方法。解决方案是手动排除poi依赖中的xmlbeans,然后单独引入正确版本的xmlbeans,重新导入依赖后问题得到解决。
2060

被折叠的 条评论
为什么被折叠?



