weblogic 10.3.4 java.lang.ClassNotFoundException: javax.el.ELContextListener
Ich habe eine JSF-1.2-Anwendung, die ich beabsichtige, bereitstellen unter Weblogic 10.3.4. Bei lokalen Tomcat-Umgebung funktioniert es einwandfrei. Aber wenn ich versuche, der Bereitstellung auf weblogic, ich bin immer ein ClassNotFoundException
auf javax.el.ELContextListener
. Wenn ich el-api.jar
- Datei, dann bekomme ich eine LinkageError: loader constraint violation
auf javax.EL.ELResolver
. Es ist ein tödlicher Teufelskreis.
Zuerst habe ich versucht zu implementieren, wie im KRIEG. Dann erstellte ich ein enterprise-Projekt, so dass ich bereitstellen können als OHR -, aber es hat das problem nicht lösen. Meine EAR-Datei-Struktur ist in Ordnung.
Erstens bekam ich folgenden Fehler,
Caused By: java.lang.ClassNotFoundException: javax.el.ELContextListener
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
Wenn ich el-api-2.2.jar
zu /WEB-INF/lib
des KRIEGES oder /APP-INF/lib
OHR, dann bekomme ich die loader constarint Fehler;
com.sun.faces.config.ConfigureListener failed: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)V" the class loader (instance of weblogic/utils/classloaders/GenericClassLoader) of the current class, com/sun/faces/config/ConfigureListener, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ELResolver used in the signature.
java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)V" the class loader (instance of weblogic/utils/classloaders/GenericClassLoader) of the current class, com/sun/faces/config/ConfigureListener, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ELResolver used in the signature
at com.sun.faces.config.ConfigureListener.registerELResolverAndListenerWithJsp(ConfigureListener.java:582)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:212)
Was ist das problem mit ihm? Ich änderte meine classpath-Reihenfolge, aber das Ergebnis war das gleiche. Meine web.xml
ist deklariert als Servlet 2.5 und ich habe die folgenden jar-Dateien in /WEB-INF/lib
:
- commons-beanutils-1.7.0.jar
- commons-collections-3.2.jar
- commons-digester-1.8.jar
- commons-logging-1.0.4.jar
- darkX-3.3.3.Final.jar
- glassX-3.3.3.Final.jar
- jsf-api.jar
- jsf-impl.jar
- jstl-1.2.jar
- laguna-3.3.3.Final.jar
- log4j-1.2.14.jar
- poi-3.7-20101029.jar
- quartz-all-1.8.4.jar
- richfaces-api-3.3.3.Final.jar
- richfaces-impl-3.3.3.Final.jar
- richfaces-ui-3.3.3.Final.jar
- scjd12.jar
- slf4j-api-1.6.0.jar
- slf4j-log4j12-1.6.0.jar
- themes-3.3.3.Final.jar
- Welche Behälter verwendest du lokal? Was Servlet-version ist
web.xml
erklärt? Was JAR-Dateien haben Sie in/WEB-INF/lib
? - Hi Balusc ich weiß, du wirst Antworten:) vielen Dank zunächst. Ich bin mit Apache Tomcat lokal. meine web.xml version 2.5 Meine Jar-Dateien inf WEB-INf/lib werden; commons-beanutils-1.7.0.jar commons-collections-3.2.jar commons-digester-1.8.jar commons-logging-1.0.4.jar darkX-3.3.3.Final.jar glassX-3.3.3.Final.jar jsf-api.jar jsf-impl.jar jstl-1.2.jar laguna-3.3.3.Final.jar log4j-1.2.14.jar poi-3.7-20101029.jar quartz-all-1.8.4.jar richfaces-api-3.3.3.Final.jar richfaces-impl-3.3.3.Final.jar richfaces-ui-3.3.3.Final.jar scjd12.jar slf4j-api-1.6.0.jar slf4j-log4j12-1.6.0.jar themes-3.3.3.Final.jar
- Hier ist ein wild guess. Sie (oder einer der Krüge) ist angewiesen auf eine neuere version der EL, als in WebLogic 10.3.4. Sie müssen ElContextListener, aber WebLogic keine hat. War es in der ersten stack-trace? Wenn ja, könnte es zeigen, wer nutzt es.
- Weblogic schon Schiffe mit JSF/JSTL gebündelt. Sie haben möglicherweise kollidierte. Versuchen Sie, entfernen Sie Sie von Ihrem
/WEB-INF/lib
vor dem Export. Ich bin nicht dieses posting als eine Antwort, denn ich bin mir nicht sicher über die Ursache und können daher nicht erklären, dieses problem. Ich glaube nicht, verwenden Sie Weblogic und ich habe nicht gesehen vorher. Lassen Sie mich wissen, wenn es funktioniert, dann werde ich umbuchen es als Antwort. @Ed Staub: DieELContextListener
ist Teil der Servlet 2.5 / JSP 2.1. Weblogic 10.3.4 ist ein Servlet 2.5 kompatible container. Also muss er es haben. - danke für Eure Antworten. Ich Tat, was Sie gesagt haben, aber leider hat es nicht funktioniert. Es wirft java.lang.IllegalStateException: die Anwendung wurde nicht ordnungsgemäß initialisiert beim Start nicht finden konnte, Werk: javax.Gesichter.Kontext.FacesContextFactory at javax.Gesichter.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:725)' Nach ein bisschen googeln habe ich hinzufügen <listener-Klasse>com.Sonne.Gesichter.config.ConfigureListener</listener-class> zu meinem web.xml Dieses mal ist es throwed 'ClassNotFoundException:javax.el.ELContextListener'
java.lang.LinkageError: loader constraint violation
Ich denke, dass zeigt doppelte Versionen der Klasse gefunden, die aus verschiedenen klassenpfade. also die EL-Gläser haben zu entfernen, ich denke, aus web-inf lib und app-inf lib- Du hast Recht ich dachte mir so, wenn ich sah, dass Fehler. Aber wenn ich zu entfernen, die lib bekomme ich javax.el.ELContextListener ClassNotFoundExcepiton
- Die
ELContextListener
sollte in der system-classpath. Haben Sie konfiguriert eine Filterung classloader in Ihrem weblogic-application.xml (prefer-application-packages) oder enabled prefer-web-inf-classes-Einstellung in weblogic.xml ? Ich sehen in der Regel solche Probleme beim ändern der classloader-delegation-Modell.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, mithilfe von filtern classloader.
weblogic-application.xml Datei kann so etwas wie:
Dies ermöglicht WebLogic die Filterung classloader zu sperren-Anwendung aus zu sehen, die JSF in die container (die javax.Gesichter und myfaces Teil in diesem Fall). Sie müssen halten Sie alles, das hängt von Ihrer Bibliothek auch in Ihre apps classloader, welcher ist warum ich habe facelets in diesem Beispiel.
Hoffe, das hilft..
Wenn Sie weiterhin diese Fehlermeldung erhalten, obwohl Sie habe alle erforderlichen änderungen im Zusammenhang mit el-Gläser (ich meine prefer-application-packages und andere Sachen weblogic-application.xml etc.), Ich denke, es ist etwas falsch in Ihrem web.xml Datei.
Bitte überprüfen Sie, dass die folgenden Zeilen in Ihre web.xml.
Endlich Schaffe ich um die Lösung zu finden.
jsf-impl jar enthält "ELContextListenerImpl" - Klasse implementiert die "ELContextListener" - Schnittstelle. Und ELContextListener-Schnittstelle ist enthalten in der wlfullclient-10.3.X.jar in den server-Pfad.
Wenn Sie nicht haben, wlfullclient jar in den server-Pfad müssen Sie "ClassNotFoundException: javax.el.ELContextListener" Fehler. Immer diese Fehlermeldung, wenn Sie das add el-api-jar-dieser Zeit werden Sie "LinkageError: loader-constraint-Verletzung" da die Versionen der Gläser, die Sie benutzt und auf dem server unterschiedlich sind. Sowieso das problem behoben werden, nach dem erstellen wlfullclient-10.3.X.jar in der weblogic server.
In Ordnung zu erstellen, die jar kannst du diesen Beitrag Lesen: http://wls4mscratch.wordpress.com/2010/06/19/steps-to-build-a-wlfullclient-jar-in-wls-10-0-x-and-wls-10-3-x/