java.lang.AbstractMethodError:org.apache.xerces.dom.ElementImpl.getTextContent()Ljava
/ lang / String;
当您的WAR
/WEB-INF/lib(甚至JRE
/lib)中存在Xerces
JAR文件时,就会发生这种情况,该文件的版本比servlet容器内部使用的版本更旧。显然实现Java
1.4.2或更早版本的JAXP的较旧版本缺少Java
1.5的
JAXP中引入的上述方法。
有2个选项:
将Xerces JAR文件升级到至少与使用servlet容器的版本匹配的较新版本。
从中删除那些Xerces JAR文件
/WEB-INF/lib
。他们实际上不属于那里。servletcontainer带有自己的JAXP实现。您无需通过网络应用程序提供自己的内容。
建议使用选项2。使用诸如Maven之类的依赖项管理框架时要当心。即使该API已经是Java
SE的一部分,某些较差的库也会特别将JAXP实现作为传递依赖项包括在内。
请注意,具体问题与OmniFaces无关。这只是由类路径污染引起的。OmniFaces使用JAXP解析
web.xml(和
web-fragment.xml)并提取错误页面位置。 更新 :自OmniFaces 2.0以来,不再存在此 特定
异常,因为它已按照问题90替换
getTextContent()为
getFirstChild().getNodevalue()。



