使用easypoi-spring-boot-starter 4.1.1导入excel报错NoSuchMethodError和NoSuchMethodError
前言
使用easypoi进行excel的导入遇到的错误以及解决办法
easypoi项目地址:https://gitee.com/lemur/easypoi
easypoi的Maven依赖:
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.1.1</version>
</dependency>
报错一:NoSuchMethodError
报错描述:
NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit()
解决办法:
XmlOptions.setEntityExpansionLimit() 错误,是 jar 包版本引起的,3.0 版本以下的 xmlbeans 中根本没有该方法,需要将jar升级到 3.0+ 版本才可以。另外加入 xmlbeans 的jar以后,不要再加入 xbean.jar
XMLBeans是什么?XMLBeans 是一种 Java 技术,它用于处理 XML 数据。XMLBeans 提供了一种将 XML 数据映射到 Java 对象的方式,从而可以轻松地在 Java 应用程序中处理和操作 XML 数据。
引入以下Maven依赖即可解决报错问题
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>3.1.0</version>
</dependency>
报错二:NoSuchMethodError
报错描述:
org.apache.commons.lang3.StringUtils.isNoneEmpty([Ljava/lang/CharSequence;)Z
at org.activiti.editor.language.json.converter.BpmnJsonConverter.convertToJson(BpmnJsonConverter.java:242)
at org.activiti.editor.ui.ConvertProcessDefinitionPopupWindow$2.buttonClick(ConvertProcessDefinitionPopupWindow.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
解决办法:
commons-lang3版本太低了,没有isNoneEmpty方法,升级至3.9及之后的版本即可
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
参考
- https://blog.csdn.net/hanjiaqun/article/details/102705107
- https://alidocs.dingtalk.com/i/nodes/oP0MALyR8k7ANjxjhjjPYaL783bzYmDO