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

8

Ich benutze Omnifaces 1.3 + Primefaces 3.4.1 + Jboss 7.1.1 Finale, aber ich kann die Ausnahmen nicht mit dem FullAjaxExceptionHandler konfigurieren, das auf meinem web.xml konfiguriert ist, wenn sie von einer Ajax-Anfrage kommen. Nichts passiert, nur eine weitere Ausnahme:

%Vor%

Kann mir jemand einen Tipp geben? Ich stecke fest. Wenn ich denselben Fehler ohne Ajax anrufe, wird die Ausnahme korrekt umgeleitet.

Mein web.xml :

%Vor%

Mein faces-config.xml :

%Vor%

Danke!

    
Basileus 23.12.2012, 21:52
quelle

1 Antwort

20
  

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

Dies passiert, wenn Xerces-JAR-Dateien in der /WEB-INF/lib Ihrer WAR (oder sogar in der JRE-Datei /lib ) vorhanden sind, die eine ältere Version haben als die, die intern vom Servletcontainer verwendet wird. Die ältere Version, die anscheinend JAXP von Java 1.4.2 oder älter, fehlt die erwähnte Methode, die in JAXP von Java 1.5 .

Es gibt 2 Optionen:

  1. Aktualisieren Sie die Xerces-JAR-Dateien auf eine neuere Version, die mindestens der Version entspricht, die der Servletcontainer verwendet hat.

  2. Entfernen Sie diese XERCES-JAR-Dateien aus /WEB-INF/lib . Sie gehören eigentlich nicht dorthin. Der Servletcontainer verfügt über eine eigene JAXP-Implementierung. Sie müssen keine eigenen über die Webanwendung angeben.

Option 2 wird empfohlen. Achten Sie darauf, wenn Sie ein Framework für das Abhängigkeitsmanagement wie Maven verwenden. Einige schlechte Bibliotheken enthalten eine JAXP-Implementierung als eine transitive Abhängigkeit, obwohl die API bereits Teil von Java SE ist.

Beachten Sie, dass das konkrete Problem nichts mit OmniFaces zu tun hat. Es ist nur durch Klassenpfadverschmutzung verursacht. OmniFaces verwendet JAXP zum Analysieren der web.xml (und web-fragment.xml ) und zum Extrahieren der Fehlerseitenspeicherorte. Update : Diese spezifische Ausnahme sollte nicht mehr auftreten seit OmniFaces 2.0 wie in Ausgabe 90 ersetzt getTextContent() Aufrufe durch getFirstChild().getNodeValue() .

    
BalusC 24.12.2012, 02:37
quelle

Tags und Links