NoClassDefFoundError: org/w3c/dom/ElementTraversal

I installed Jetty 7 and configured it correcty for IdP Shibboleth following this guide: https://wiki.shibboleth.net/confluence/display/SHIB2/IdPJetty7Prepare

But when i try to start Jetty I get this error:

NoClassDefFoundError: org/w3c/dom/ElementTraversal

To resolve this issue i need to install the ElementTraversal dependency and include it on my classpath.
But how can i accomplish this? Do i need to download this Class [ElementTraversal.class] or a .jar file? and where i can place it? in the JETTY_HOME? Do I need to export the CLASSPATH?

Can someone help me?
Thank you so much!


Solution 1:

It looks like ElementTraversal is part of xml-apis-2.10.0.jar which should have been provided with your Shibboleth installation.

So if you were following these instructions you should also have followed this step:

Endorse Xerces and Xalan by creating the directory JETTY_HOME/lib/endorsed/ and copy the .jar files included in the IdP source endorsed/ directory into the newly created directory.

So long as you copied all the jar files appropriately, it should be okay. My guess is that you missed out that step - or perhaps only copied the jar files with Xalan or Xerces in the name, and missed the other two.

Solution 2:

In my case the problem was fixed by changing xml-apis version from 1.3.04 to 1.4.01.

BTW, version 2.10.0 doesn't exist in Maven Central (I'm curious where did Jon Skeet find it).

Solution 3:

Add this in your file, to resolve the dependency:

 <dependency>
      <groupId>xml-apis</groupId>
      <artifactId>xml-apis</artifactId>
      <version>1.4.01</version>
 </dependency>