更新Apache POI 4.0后 – 无法识别属性“http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit”
在将Apache POI从3.17更新到4.0.0后,我正在上线:
OPCPackage pck = OPCPackage.open(this.getTemplate());
例外:
java.lang.IllegalArgumentException: Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized. at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.setAttribute(DocumentBuilderFactoryImpl.java:144) at __redirected.__DocumentBuilderFactory.setAttribute(__DocumentBuilderFactory.java:125) at org.apache.poi.ooxml.util.DocumentHelper.trySetXercesSecurityManager(DocumentHelper.java:143) at org.apache.poi.ooxml.util.DocumentHelper.(DocumentHelper.java:108) at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:392) at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.(ContentTypeManager.java:104) at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.(ZipContentTypeManager.java:54) at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:258) at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:725) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:275) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:181)
他们说在如何禁用accessExternalDTD和entityExpansionLimit警告与logback我应该排除xerces,但我已经有这个:
org.apache.poi poi 4.0.0 org.apache.poi poi-ooxml 4.0.0 xml-apis xml-apis xerces xercesImpl
我的设置:
- JDK 8
- WildFly 14
回到3.17修复了这个问题。
POI 4.0.0代码使用xerces的最新版本 – 代码甚至没有尝试设置实体扩展限制,因为它将首先设置xerces安全管理器并停在那里 – 你能够尝试在最新版本的xerces上添加显式依赖项? https://mvnrepository.com/artifact/xerces/xercesImpl/2.12.0
- 在java中读取.docx文件
- 从自定义类导入时,无法对XMLBeans jar进行签名
- 如何缓存InputStream以供多种用途
- java.lang.OutOfMemoryError:加载xlsx文件时超出了GC开销限制
- 使用Apache POI在Excel文件中获取列的名称
- 如何使用Apache Poi更改工作表的选项卡颜色
- 如何在Excel POI中将Excel单元格格式化为日期,与Excel中的“格式刷”操作一样
- POI 3.2图像高度/宽度控制
- 如何避免Apache POI中的java.lang.NoSuchMethodError:org.apache.poi.util.IOUtils.copy(Ljava / io / InputStream; Ljava / io / OutputStream;)