java.lang.AbstractMethodError:org.apache.xerces.dom.ElementImpl.getTextContent()Ljava /朗/字符串 [英] java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()Ljava/lang/String

查看:852
本文介绍了java.lang.AbstractMethodError:org.apache.xerces.dom.ElementImpl.getTextContent()Ljava /朗/字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用Omnifaces 1.3 + Primefaces 3.4.1 +的Jboss 7.1.1决赛,但我就是不能重定向的例外 FullAjaxExceptionHandler 我的<$配置C $ C>的web.xml 。什么也没有发生,只是一个又一个例外:

  19:38:。05467错误[org.apache.catalina.core.ContainerBase [jboss.web] [默认主机] [/ taxMileage] [面临的Servlet] (HTTP  -  0.0.0.0-8181-4)Servlet.service()进行的servlet面临的Servlet抛出异常:java.lang.AbstractMethodError:org.apache.xerces.dom.ElementImpl.getTextContent()Ljava /朗/字符串;
    在org.omnifaces.config.WebXml.parseErrorPageLocations(WebXml.java:216)omnifaces-1.3.jar:1.3]
    。在org.omnifaces.config.WebXml&LT; INIT&GT;(WebXml.java:84)omnifaces-1.3.jar:1.3]
    。在org.omnifaces.config.WebXml&LT; clinit&GT;(WebXml.java:53)omnifaces-1.3.jar:1.3]
    在org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.handleAjaxException(FullAjaxExceptionHandler.java:162) [omnifaces-1.3.jar:1.3]
    在org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.handle(FullAjaxExceptionHandler.java:145)omnifaces-1.3.jar:1.3]
    在com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)[JSF-implement执行-2.1.7-jbossorg-2.jar:]
    在com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)[JSF-implement执行-2.1.7-jbossorg-2.jar:]
 

有人可以给,我这个提示?我坚持。如果我叫了同样的错误没有Ajax的例外是正确的重定向。

我的的web.xml

&LT; XML版本=1.0编码=UTF-8&GT?; &LT; web应用程序的xmlns:XSI =htt​​p://www.w3.org/2001/XMLSchema-instance的xmlns =htt​​p://java.sun.com/xml/ns/javaee     的xmlns:网络=htt​​p://java.sun.com/xml/ns/javaee/web-app_2_5.xsdXSI:的schemaLocation =htt​​p://java.sun.com/xml/ns/javaee HTTP:/ /java.sun.com/xml/ns/javaee/web-app_3_0.xsd     ID =WebApp_ID版本=3.0 &GT;     &lt;显示-名称&gt;&taxMileage LT; /显示-名称&gt;     &LT;欢迎-文件列表&gt;         &LT;欢迎-文件&gt; /pages/protected/user/dashboard.xhtml< /欢迎-文件&gt;     &LT; /欢迎-文件列表&gt;     &LT;的servlet&GT;         &LT; servlet的名称&gt;面的Servlet&LT; / Servlet的名称&gt;         &LT;的servlet类&GT; javax.faces.w​​ebapp.FacesServlet&LT; / Servlet的类&GT;         &所述;负载上启动→1&其中; /负载上启动&GT;     &LT; / servlet的&GT;     &LT;的servlet&GT;         &LT; servlet的名称&gt;&InitializeApplication LT; / Servlet的名称&gt;         &LT;的servlet类&GT; com.taxMileage.server.util.InitializeApplication&LT; / Servlet的类&GT;         &所述;负载上启动→1&其中; /负载上启动&GT;     &LT; / servlet的&GT;     &LT;的context-param&GT;         &LT;参数 - 名称&gt;&primefaces.THEME LT; /参数 - 名称&gt;         &LT;参数值&GT;南大街&LT; /参数值&GT;     &LT; /的context-param&GT;     &其中;滤光器&gt;         &LT;过滤器名称&gt; PrimeFaces文件上传过滤和LT; /过滤器名称&gt;         &LT;过滤器类和GT; org.primefaces.w​​ebapp.filter.FileUploadFilter&LT; /过滤器级&GT;     &LT; /滤光器&gt;     &LT;过滤器映射&GT;         &LT;过滤器名称&gt; PrimeFaces文件上传过滤和LT; /过滤器名称&gt;         &LT; servlet的名称&gt;面的Servlet&LT; / Servlet的名称&gt;     &LT; /过滤器映射&GT;     &其中;滤光器&gt;         &LT;过滤器名称&gt;&facesExceptionFilter LT; /过滤器名称&gt;         &LT;过滤器类和GT; org.omnifaces.filter.FacesExceptionFilter&LT; /过滤器级&GT;     &LT; /滤光器&gt;     &LT;过滤器映射&GT;         &LT;过滤器名称&gt;&facesExceptionFilter LT; /过滤器名称&gt;         &LT; servlet的名称&gt;面的Servlet&LT; / Servlet的名称&gt;     &LT; /过滤器映射&GT;     &LT; Servlet映射&GT;         &LT; servlet的名称&gt;面的Servlet&LT; / Servlet的名称&gt;         &LT; URL模式&GT; /面/ *&LT; / URL模式&GT;         &LT; URL模式&GT; * JSF&LT; / URL模式&GT;         &LT; URL模式&GT; * XHTML&LT; / URL模式&GT;     &LT; / Servlet映射&GT;     &LT; Servlet映射&GT;         &LT; servlet的名称&gt;&javax.ws.rs.core.Application LT; / Servlet的名称&gt;         &LT; URL模式&GT; / REST / *&LT; / URL模式&GT;     &LT; / Servlet映射&GT;     &LT; - ! - &GT;     &LT;! - 受保护的区域定义 - &GT;     &LT;安全约束&GT;         &LT;网络资源收集和GT;             &LT;网上资源名称&gt;禁区 - 仅管理&LT; /网上资源名称&gt;             &LT; URL模式&GT; /页/保护/管理/ *&LT; / URL模式&GT;         &LT; /网络资源收集和GT;         &LT;身份验证约束&GT;             &LT;角色名称&gt;行政与LT; /角色名称&gt;         &LT; / AUTH约束&GT;     &LT; /安全约束&GT;     &LT;安全约束&GT;         &LT;网络资源收集和GT;             &LT;网上资源名称&gt;禁区 - 用户和ADMIN&LT; /网上资源名称&gt;             &LT; URL模式&GT; /页/保护/用户/ *&LT; / URL模式&GT;         &LT; /网络资源收集和GT;         &LT;身份验证约束&GT;             &LT;角色名称&gt;用户LT; /角色名称&gt;             &LT;角色名称&gt;行政与LT; /角色名称&gt;         &LT; / AUTH约束&GT;     &LT; /安全约束&GT;     &LT;安全约束&GT;         &LT;网络资源收集和GT;             &LT;网上资源名称&gt;受保护的资源和LT; /网上资源名称&gt;             &LT; URL模式&GT; / REST / *&LT; / URL模式&GT;         &LT; /网络资源收集和GT;         &lt;使用者数据约束&GT;             &LT;运输保障&GT;无&LT; /运输保障&GT;         &所述; /用户数据约束&GT;     &LT; /安全约束&GT;     &LT; - !登录页面 - &GT;     &LT;登录名,配置&GT;         &LT; AUTH-方法&gt;表并LT; / AUTH-方法&gt;         &LT;表单登录,配置&GT;             &LT;表单登录页&GT; /pages/public/login.xhtml< /表单登录页&GT;             &LT;形式的错误页面&GT; /pages/public/loginError.xhtml< /表单错误页&GT;         &LT; /表单登录,配置&GT;     &LT; /登录,配置&GT;     &LT;! - 系统的角色 - &GT;     &LT;安全角色&GT;         &LT;角色名称&gt;行政与LT; /角色名称&gt;     &LT; /安全角色&GT;     &LT;安全角色&GT;         &LT;角色名称&gt;用户LT; /角色名称&gt;     &LT; /安全角色&GT;     &LT;错误页&GT;         &LT;异常型&GT; java.lang.RuntimeException的&LT; /异常型&GT;         &LT;地点&gt; /pages/error/error1.xhtml< /地点&gt;     &LT; /错误页面&GT; &LT; / web-app的&GT;

我的 faces-config.xml中

&LT; XML版本=1.0编码=UTF-8&GT?; &LT;脸,配置的xmlns =htt​​p://java.sun.com/xml/ns/javaee     的xmlns:XSI =htt​​p://www.w3.org/2001/XMLSchema-instance     XSI:的schemaLocation =htt​​p://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd     版本=2.1&GT;     &LT;生命周期&GT;         &LT;相收听GT; com.taxMileage.server.util.MultiPageMes​​sagesSupport&LT; /相位收听GT;     &LT; /生命周期&GT;     &LT;工厂&GT;         <exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory>     &LT; /工厂&GT;     &lt;应用&GT;         &LT;资源包&GT;             &LT;基本名称&gt;的消息&LT; /基名称&gt;             &LT; VAR&GT;封邮件&LT; / VAR&GT;         &LT; /资源包&GT;     &LT; /用途&gt; &LT; /面,配置&GT;

谢谢!

解决方案
  

java.lang.AbstractMethodError:org.apache.xerces.dom.ElementImpl.getTextContent()Ljava /朗/字符串;

当有Xerces的在你的WAR的 / WEB-INF / lib目录(甚至是JRE的 / lib目录),这是不是内部使用servletcontainer一个旧版本。较旧的版本,这显然实现了 1.4.2 以上的老年人,缺少这是中的 Java 1.5的

有2个选择:

  1. 升级Xerces的JAR文件到新的版本匹配至少有一个使用的servletcontainer。

  2. / WEB-INF / lib目录删除这些Xerces的JAR文件。他们其实并不属于那里。该servletcontainer带有自己的JAXP实现。你并不需要通过Web应用程序来提供你自己的。

选项2的建议。使用依赖管理框架,如Maven的时候当心。一些贫困图书馆将具体包括JAXP实现作为传递依赖,即使API已经是Java SE的一部分。

注意具体问题是无关的OmniFaces。这只是造成classpath中的污染。 OmniFaces使用JAXP来解析的web.xml (和网​​络fragment.xml之),并提取了错误页面的位置。 更新:这个的的具体的例外情况,不应再发生,因为OmniFaces 2.0,因为它有根据的问题90 替换 getTextContent() getFirstChild()的调用。getNodeValue()

I'm using Omnifaces 1.3 + Primefaces 3.4.1 + Jboss 7.1.1 Final but I just can't redirect the exceptions with the FullAjaxExceptionHandler configured on my web.xml when they come by ajax request. Nothing happens, just an another exception:

19:38:05,467 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/taxMileage].[Faces Servlet]] (http--0.0.0.0-8181-4) Servlet.service() for servlet Faces Servlet threw exception: java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()Ljava/lang/String;
    at org.omnifaces.config.WebXml.parseErrorPageLocations(WebXml.java:216) [omnifaces-1.3.jar:1.3]
    at org.omnifaces.config.WebXml.<init>(WebXml.java:84) [omnifaces-1.3.jar:1.3]
    at org.omnifaces.config.WebXml.<clinit>(WebXml.java:53) [omnifaces-1.3.jar:1.3]
    at org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.handleAjaxException(FullAjaxExceptionHandler.java:162) [omnifaces-1.3.jar:1.3]
    at org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.handle(FullAjaxExceptionHandler.java:145) [omnifaces-1.3.jar:1.3]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) [jsf-impl-2.1.7-jbossorg-2.jar:]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]

Can someone give-me a tip about this? I'm stuck. If I call the same error without ajax the exception is redirected correctly.

My web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0"
>
    <display-name>taxMileage</display-name>
    <welcome-file-list>
        <welcome-file>/pages/protected/user/dashboard.xhtml</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>InitializeApplication</servlet-name>
        <servlet-class>com.taxMileage.server.util.InitializeApplication</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>south-street</param-value>
    </context-param>
    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    <filter>
        <filter-name>facesExceptionFilter</filter-name>
        <filter-class>org.omnifaces.filter.FacesExceptionFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>facesExceptionFilter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
        <url-pattern>*.jsf</url-pattern>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

    <!-- -->

    <!-- Protected area definition -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Restricted Area - ADMIN Only</web-resource-name>
            <url-pattern>/pages/protected/admin/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>ADMIN</role-name>
        </auth-constraint>
    </security-constraint>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Restricted Area - USER and ADMIN</web-resource-name>
            <url-pattern>/pages/protected/user/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>USER</role-name>
            <role-name>ADMIN</role-name>
        </auth-constraint>
    </security-constraint>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Secured resources</web-resource-name>
            <url-pattern>/rest/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

    <!-- Login page -->
    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/pages/public/login.xhtml</form-login-page>
            <form-error-page>/pages/public/loginError.xhtml</form-error-page>
        </form-login-config>
    </login-config>

    <!-- System roles -->
    <security-role>
        <role-name>ADMIN</role-name>
    </security-role>
    <security-role>
        <role-name>USER</role-name>
    </security-role>

    <error-page>
        <exception-type>java.lang.RuntimeException</exception-type>
        <location>/pages/error/error1.xhtml</location>
    </error-page>
</web-app>

My faces-config.xml:

<?xml version="1.0" encoding="UTF-8"?>

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
    version="2.1">

    <lifecycle>
        <phase-listener>com.taxMileage.server.util.MultiPageMessagesSupport</phase-listener>
    </lifecycle>

    <factory>
        <exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory>
    </factory>

    <application>
        <resource-bundle>
            <base-name>messages</base-name>
            <var>msgs</var>
        </resource-bundle>
    </application>
</faces-config>

Thanks!

解决方案

java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()Ljava/lang/String;

This will happen when there are Xerces JAR files in your WAR's /WEB-INF/lib (or even JRE's /lib) which is of an older version than the one internally used by the servletcontainer. The older version, which apparently implements JAXP of Java 1.4.2 or older, is missing the mentioned method which was introduced in JAXP of Java 1.5.

There are 2 options:

  1. Upgrade Xerces JAR files to a newer version matching at least the one used the servletcontainer.

  2. Remove those Xerces JAR files from /WEB-INF/lib. They do actually not belong there. The servletcontainer comes with its own JAXP implementation. You don't need to supply your own via the webapp.

Option 2 is recommended. Watch out when using a dependency management framework such as Maven. Some poor libraries will specifically include a JAXP implementation as a transitive dependency even though the API is already part of Java SE.

Note that the concrete problem is unrelated to OmniFaces. It's just caused by classpath pollution. OmniFaces uses JAXP to parse the web.xml (and web-fragment.xml) and extract the error page locations. Update: this specific exception shouldn't occur anymore since OmniFaces 2.0 as it has as per issue 90 replaced getTextContent() calls by getFirstChild().getNodeValue().

这篇关于java.lang.AbstractMethodError:org.apache.xerces.dom.ElementImpl.getTextContent()Ljava /朗/字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆