2

I want to mention that, the whole process runs absolutely fine, when I am using Java 8. But when I am trying the same process with Java 10 I am getting a big Error Message.

I know that poi 3.17 has problems with Java 10, but since https://bz.apache.org/bugzilla/show_bug.cgi?id=62187 -- the developer of poi 4 say that now it should be possible to run poi 4 with java 10, I am confused and dont know how to solve my issue?

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
Paolo Forgia
  • 6,572
  • 8
  • 46
  • 58
Javed Was
  • 56
  • 1
  • 5
  • 1
    Could you try adding an explicit dependency on an up to date copy of xerces, eg https://stackoverflow.com/a/52283380/987959 ? – PJ Fanning Sep 11 '18 at 20:01
  • I am not working with Maven. I use Intellij for my coding and adding the Libaries which I need as Jar files. Actually I make use of following Libraries: 1)poi-4.0.0 --- 2)xerces-2_12_0 --- 3)xml-commons-external-1.4.01 – Javed Was Sep 15 '18 at 11:30
  • @JavedWas why not use Maven? IntelliJ can use Maven poms directly as project files. – jwenting Oct 02 '18 at 05:29
  • The work I am doing needs to work offline - and a couple of weeks a ago I found out, that Intellij can download Maven dependencies for offline usage. So now i also can use Maven. I hope this wil solve my problem :D - Thank you – Javed Was May 15 '19 at 09:43

2 Answers2

4

I've added a dependency to xercesImpl in my Gradle setup (build.gradle) which fixes this issue:

"xerces:xercesImpl:2.12.0",

If you are using Maven, add:

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.12.0</version>
</dependency>
uwolfer
  • 4,356
  • 1
  • 25
  • 40
0

You are likely missing one of the transitive dependencies of Xerces, at least xml-apis.jar, but there are also more jar-files in the binary distribution at http://xerces.apache.org/mirrors.cgi which you might need as well.

centic
  • 15,565
  • 9
  • 68
  • 125