Ошибка при использовании Apache Poi 4 с Java 10 - PullRequest
0 голосов
/ 11 сентября 2018

Хочу отметить, что весь процесс работает абсолютно нормально, когда я использую Java 8. Но когда я пытаюсь выполнить тот же процесс с Java 10, я получаю большое сообщение об ошибке.

Я знаючто у poi 3.17 есть проблемы с Java 10, но поскольку https://bz.apache.org/bugzilla/show_bug.cgi?id=62187 - разработчик poi 4 говорит, что теперь должна быть возможность запустить poi 4 с java 10, я запутался и не знаю, как решить мою проблему?

Exception in thread "main" java.lang.NoClassDefFoundError: org/w3c/dom/ls/DocumentLS
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.setAttribute(Unknown Source)
    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:301)
    at org.apache.poi.xslf.usermodel.XMLSlideShow.empty(XMLSlideShow.java:118)
    at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:90)
    at graphplot.TransferToPowerpoint.BuildPresentation(TransferToPowerpoint.java:202)
    at graphplot.GraphPlot.main(GraphPlot.java:139)
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ls.DocumentLS
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    ... 23 more

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Я добавил зависимость к xercesImpl в моей настройке Gradle (build.gradle), которая устраняет эту проблему:

"xerces:xercesImpl:2.12.0",

Если вы используете Maven, добавьте:

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.12.0</version>
</dependency>
0 голосов
/ 02 октября 2018

Вероятно, вам не хватает одной из транзитивных зависимостей Xerces, по крайней мере, xml-apis.jar, но в бинарном дистрибутиве также есть больше jar-файлов на http://xerces.apache.org/mirrors.cgi, которые вам также могут понадобиться.

...