Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NoClassDefFoundError:org/w3c/dom/ElementTraversal_Java_Jetty_Shibboleth - Fatal编程技术网

Java NoClassDefFoundError:org/w3c/dom/ElementTraversal

Java NoClassDefFoundError:org/w3c/dom/ElementTraversal,java,jetty,shibboleth,Java,Jetty,Shibboleth,我安装了Jetty 7,并按照本指南正确配置了IdP Shibboleth: 但当我尝试启动Jetty时,我得到了以下错误: NoClassDefFoundError: org/w3c/dom/ElementTraversal 要解决此问题,我需要安装ElementTraversal依赖项,并将其包含在我的类路径中

我安装了Jetty 7,并按照本指南正确配置了IdP Shibboleth:

但当我尝试启动Jetty时,我得到了以下错误:

NoClassDefFoundError: org/w3c/dom/ElementTraversal
要解决此问题,我需要安装ElementTraversal依赖项,并将其包含在我的类路径中<但是我怎样才能做到这一点呢?我需要下载这个类还是一个.jar文件?我可以把它放在哪里?在
JETTY_HOME
?是否需要导出
类路径

有人能帮我吗?

非常感谢你

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

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

通过创建JETTY_HOME/lib/annowed/目录来认可Xerces和Xalan,并将IdP source annowed/目录中包含的.jar文件复制到新创建的目录中


只要您正确地复制了所有jar文件,就可以了。我猜您错过了这一步——或者可能只是复制了名称中带有Xalan或Xerces的jar文件,而错过了另外两个。

在我的例子中,通过将xml API版本从1.3.04更改为1.4.01,问题得到了解决


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

将此添加到文件中,以解决依赖关系:

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

xml API
xml API
1.4.01

非常感谢,但我也遵循了这一步骤。我将
xalan-2.7.1.jar
xercesImpl-2.10.0.jar
正确复制到JETTY_HOME/lib/annocated/中,并在start.ini中添加了以下行:
-Djava.annocated.dirs=lib/annocated
我遵循了所有步骤。我在
opt/shibboleth idp/lib/annowed/xml-api-2.10.0.jar
。。我认为问题可能出在start.ini中定义的路径上。我可以尝试使用绝对路径
-Djava.annowed.dirs=/home/user/webapps/jetty/lib/annowed
也不能使用绝对路径。谢谢Jon Skeet,收到您对我的问题的回复,我感到非常高兴和荣幸。@Fuiba:不清楚您是否将所有四个jar文件复制到JETTY_HOME/lib/annowed中。您说您在opt/shibboleth idp/lib/annowned中有xml-api-2.10.0.jar,但应该将其与xalan和xerces jar文件一起复制。是吗?@Fuiba:但在更改之前,它已经说了“复制IdP source/directory中包含的.jar文件”-我不认为这是一个错误,尽管我同意现在更清楚了。这是2016年12月的一个有用答案的补充,在maven中还有一个2.0.0和2.0.2版本的xml API,但它们不是新的jar,它们只是一个pom,表示迁移到1.0.b2。我不知道是哪个团队在背后支持这一点,但如果他们不想打开他们的代码,他们不必把它放在maven中,这是可以理解的。但是他们把它放在那里,并将它重新定位到一个较低的版本,这浪费了许多开发人员的时间(我看到2.0版本的使用超过100次),这是不可接受的。@Tiina这是我的理由……很遗憾我没有先找到这个评论。然而,你能完成这个并告诉我们如何使用maven获得正确的版本吗?@conversorshaki我通常使用stackoverflow找到正确的版本。并尝试使用更高版本和可接受使用次数的版本。虽然我使用XMLAPI2.0,但问题没有解决,但我查看了它的pom,发现“重新定位到较低的”oops。通常,当人们在更新pom后看不出有什么不同时,他们会首先考虑他们的互联网问题。这也是我第一个担心的问题。这个神奇的方法对我有效,代码:`private static void generateHTMLFromPDF(字符串文件名)抛出IOException,parserConfiguration异常{PDDocument pdf=PDDocument.load(new File(filename));Writer output=new PrintWriter(“pdf.html”,“utf-8”);new PDFDomTree().writeText(pdf,输出);output.close();}`开始工作!