после обновления Apache POI 4.0 - свойство 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' не распознается - PullRequest
0 голосов
/ 07 сентября 2018

После обновления 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.<clinit>(DocumentHelper.java:108)
     at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:392)
     at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.<init>(ContentTypeManager.java:104)
     at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.<init>(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, но у меня уже было это:

  <dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi</artifactId>
     <version>4.0.0</version>
  </dependency>
  <dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi-ooxml</artifactId>
     <version>4.0.0</version>
     <exclusions>
        <exclusion>
           <groupId>xml-apis</groupId>
           <artifactId>xml-apis</artifactId>
        </exclusion>
        <exclusion>
           <groupId>xerces</groupId>
           <artifactId>xercesImpl</artifactId>
        </exclusion>
     </exclusions>
  </dependency>

Моя настройка:

  • JDK 8
  • WildFly 14

Возвращение к 3.17 устраняет проблему.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Это исправлено в POI 4.0.1 .

Соответствующая ошибка: https://bz.apache.org/bugzilla/show_bug.cgi?id=62692

0 голосов
/ 11 сентября 2018

код POI 4.0.0 работает с современными версиями xerces - код даже не пытается установить предел расширения сущности, потому что сначала он установит менеджер безопасности xerces и остановится на этом - не могли бы вы быть в состоянии попытаться добавить явную зависимость от последней версии Xerces? https://mvnrepository.com/artifact/xerces/xercesImpl/2.12.0

...