NoClassDefFoundError:org/w3c/dom/ElementTraversal

Mus*_*sar 23 java jetty shibboleth

我按照本指南安装了Jetty 7并为IdP Shibboleth配置了正确的:https://wiki.shibboleth.net/confluence/display/SHIB2/IdPJetty7Prepare

但是,当我尝试启动Jetty时,我收到此错误:

NoClassDefFoundError: org/w3c/dom/ElementTraversal
Run Code Online (Sandbox Code Playgroud)

要解决此问题,我需要安装ElementTraversal依赖项并将其包含在我的类路径中.
但是我怎么能做到这一点?我是否需要下载此类[ElementTraversal.class].jar文件?我可以放在哪里?在JETTY_HOME?我需要出口CLASSPATH吗?

有人能帮我吗?
非常感谢!

Jon*_*eet 25

看起来ElementTraversal xml-apis-2.10.0.jar应该是您的Shibboleth安装提供的一部分.

因此,如果您遵循这些说明,您也应该遵循以下步骤:

通过创建目录JETTY_HOME/lib/endorsed /来支持Xerces和Xalan,并将IdP源endorsed /目录中包含的.jar文件复制到新创建的目录中.

只要你适当地复制了所有jar文件,它应该没问题.我的猜测是你错过了那一步 - 或者只是在名字中复制了带有Xalan或Xerces的jar文件,而错过了其他两个.


yeg*_*256 17

在我的情况下,通过将xml-apis版本从1.3.04更改为1.4.01来解决问题.

顺便说一句,版本2.10.0在Maven Central中不存在(我很好奇Jon Skeet在哪里找到它).

  • 从2016年12月开始补充这个有用的答案,在maven中还有2.0.0和2.0.2版本的xml-apis,但它们不是新的jar,它们只是一个pom,说重定位到1.0.b2.我不知道哪个团队支持这个,但如果他们不想打开他们的代码,他们就不必把它放在maven中,这是可以理解的.但他们把它放在那里,并将其重新安置到较低版本,这浪费了许多开发人员的时间(我看到超过100版本的2.0版本),这是不可接受的. (2认同)

Ran*_*ler 8

在您的文件中添加此文件,以解决依赖性:

 <dependency>
      <groupId>xml-apis</groupId>
      <artifactId>xml-apis</artifactId>
      <version>1.4.01</version>
 </dependency>
Run Code Online (Sandbox Code Playgroud)