Java 如何修复通过ApachePOI上载xlsx文件时的AbstractMethodError

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.

我一直在尝试使上载(在旧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.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”);