Apache POI解析错误

我知道这个问题经常被问到,但找不到合适的解决方案。 在工作时

XWPFDocument xdoc = new XWPFDocument(srcFile); 

要么

 XSSFWorkbook workbook = new XSSFWorkbook(srcFile); 

我总是得到以下错误:

 Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.apache.poi.util.POILogger.log(ILjava/lang/Object;)V from class org.apache.poi.openxml4j.opc.PackageRelationshipCollection at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.parseRelationshipsPart(PackageRelationshipCollection.java:313) at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.(PackageRelationshipCollection.java:163) at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.(PackageRelationshipCollection.java:131) at org.apache.poi.openxml4j.opc.PackagePart.loadRelationships(PackagePart.java:561) at org.apache.poi.openxml4j.opc.PackagePart.(PackagePart.java:109) at org.apache.poi.openxml4j.opc.PackagePart.(PackagePart.java:80) at org.apache.poi.openxml4j.opc.PackagePart.(PackagePart.java:125) at org.apache.poi.openxml4j.opc.ZipPackagePart.(ZipPackagePart.java:78) at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:243) at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:684) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:275) at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) at org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:266) 

人们建议打开PackageRelationshipCollection试。 但这没有多大帮助。

我也加载了jar子:

  org.apache.poi poi 3.13 jar   org.apache.poi poi-scratchpad 3.13 jar   org.apache.poi poi-ooxml 3.12 jar   org.apache.poi poi-ooxml-schemas 3.11 jar  

来自Apache POI FAQ :

我可以混合不同版本的POIjar吗?

不,这不受支持。

所有正在使用的POIjar必须来自同一版本。 不支持poi-3.11.jar和poi-ooxml-3.9.jar等组合,并且无法以不可预测的方式工作。

您的pom依赖于3.11,3.12和3.13中的Apache POI jar,其中不支持FAQ解释

您需要将所有这些更改为3.13,然后它才会起作用

我建议像:

  3.13    org.apache.poi poi ${poi.version}   org.apache.poi poi-scratchpad ${poi.version}   org.apache.poi poi-ooxml ${poi.version}   

这样,您可以确保所有POIjar都来自同一版本!