Java 如何修复通过ApachePOI上载xlsx文件时的AbstractMethodError
我一直在尝试使上载(在旧web应用程序中)兼容xls和xlsx文件,xls运行正常,但上载xlsx会引发以下错误:Java 如何修复通过ApachePOI上载xlsx文件时的AbstractMethodError,java,apache-poi,xlsx,Java,Apache Poi,Xlsx,我一直在尝试使上载(在旧web应用程序中)兼容xls和xlsx文件,xls运行正常,但上载xlsx会引发以下错误: SEVERE: Servlet.service() for servlet [MainServlet] in context with path [/timesheet] threw exception [Servlet execution threw an exception] with root cause java.lang.AbstractMethodError: org.
SEVERE: Servlet.service() for servlet [MainServlet] in context with path [/timesheet] threw exception [Servlet execution threw an exception] with root cause
java.lang.AbstractMethodError: org.apache.crimson.tree.ElementNode2.getTextContent()Ljava/lang/String;
at org.apache.poi.openxml4j.opc.internal.unmarshallers.PackagePropertiesUnmarshaller.readElement(PackagePropertiesUnmarshaller.java:146)
at org.apache.poi.openxml4j.opc.internal.unmarshallers.PackagePropertiesUnmarshaller.loadCreated(PackagePropertiesUnmarshaller.java:162)
at org.apache.poi.openxml4j.opc.internal.unmarshallers.PackagePropertiesUnmarshaller.unmarshall(PackagePropertiesUnmarshaller.java:124)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:788)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:327)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:185)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:144)
当前的poi库版本是3.14,但我也尝试了3.16(相同的错误)和3.17,该应用程序目前使用的是Java1.6
public List getAttendanceRecords(列表错误消息)引发异常{
工作簿wb=WorkbookFactory.create(新文件输入流(arFile));//应用程序在到达此行时已抛出错误
List attendanceRecordList=新建ArrayList();
出现此类错误的原因是,您的项目中包含了,该项目仅在节点
接口上提供实现(基于最新版本1.1.3的xml API 1.0.b2),而未实现根据引入的getTextContent()
方法
要修复此错误,可以执行以下操作之一:
1.从项目中删除深红库
2.通过添加以下行,指定javax.xml.parsers.DocumentBuilderFactory
系统属性以避免使用org.apache.crimson.jaxp.DocumentBuilderFactoryImpl
类System.setProperty(“javax.xml.parsers.DocumentBuilderFactory”、“com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl”);