2

我想提一下,当我使用 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
4

2 回答 2

4

我在我的 Gradle 设置 (build.gradle) 中添加了对xercesImpl的依赖项,它解决了这个问题:

"xerces:xercesImpl:2.12.0",

如果您使用的是 Maven,请添加:

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.12.0</version>
</dependency>
于 2018-10-03T09:53:46.670 回答
0

您可能至少缺少 Xerces 的传递依赖项之一,但在http://xerces.apache.org/mirrors.cgixml-apis.jar的二进制分发中还有更多的 jar 文件,您可能也需要这些文件。

于 2018-10-02T05:00:24.047 回答