java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener al usar MyFaces con WASCE/GerĂ³nimo
jsf geronimo (4)
Caused by: java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
La clase que falta es parte de Mojarra , que en realidad es el competidor de MyFaces .
No deberías necesitar esa clase cuando uses MyFaces. Esta excepción puede tener las siguientes causas posibles:
Hay una entrada
<listener>
definida manualmente enweb.xml
deweb.xml
oweb-fragment.xml
de cualquiera de los JAR desplegados en/WEB-INF/lib
que hace referencia a esta clase de oyente específica de Mojarra.Hay un archivo suelto de Mojarra
.tld
en el classpath (muy poco probable, ¿quién extraería un archivo JAR y colocaría sus contenidos sueltos en el classpath?). Los archivos TLD se autoinicializan y pueden contener una entrada<listener>
que puede desencadenar el registro automático de una implementación deServletContextListener
(como MojarraConfigureListener
).
Esos conflictos pueden solucionarse simplemente eliminándolo.
Intento crear una aplicación web JSF simple utilizando MyFaces v 2.1 con WebSphere Application Server Community Edition v3.0.0.1 y Eclipse Juno, pero cuando intento ejecutar la aplicación, aparece el siguiente error
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
org.apache.geronimo.common.DeploymentException: java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
at org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.createWebAppClassFinder(AbstractWebModuleBuilder.java:665)
at org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.configureBasicWebModuleAttributes(AbstractWebModuleBuilder.java:698)
at org.apache.geronimo.tomcat.deployment.TomcatModuleBuilder.addGBeans(TomcatModuleBuilder.java:469)
at org.apache.geronimo.j2ee.deployment.SwitchingModuleBuilder.addGBeans(SwitchingModuleBuilder.java:174)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:764)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:255)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:131)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:883)
at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:245)
at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:344)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:131)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:883)
at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:245)
at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:172)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:848)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:773)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1438)
at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:83)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1276)
at java.security.AccessController.doPrivileged(AccessController.java:284)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1378)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:799)
at sun.reflect.GeneratedMethodAccessor73.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:171)
at java.security.AccessController.doPrivileged(AccessController.java:284)
at sun.rmi.transport.Transport.serviceCall(Transport.java:167)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:547)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:802)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:661)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919)
at java.lang.Thread.run(Thread.java:736)
Caused by: java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass(GeronimoClassLoader.java:85)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
at org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.addClass(AbstractWebModuleBuilder.java:670)
at org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.createWebAppClassFinder(AbstractWebModuleBuilder.java:661)
... 45 more
Presumiblemente, el error se está produciendo porque los archivos jar MyFaces no están en la ruta de la clase, sin embargo, no puedo entender dónde me estoy equivocando, ya que la ruta de compilación en Eclipse contiene los archivos jar requeridos. También intenté copiar los archivos jar en el directorio WEB-INF / lib pero fue en vano.
La captura de pantalla siguiente muestra la estructura del proyecto junto con las bibliotecas.
¿Hay algo específico que deba hacer en Eclipse o WASCE para incluir los archivos jar o el problema está en otra parte?
Implementé una aplicación web con Myfaces en un servidor Jetty y fue necesario usar un detector y un parámetro init adicional para usar facelets:
<context-param>
<param-name>org.apache.myfaces.FACES_INITIALIZER </param-name>
<param-value>org.apache.myfaces.webapp.FaceletsInitilializer</param-value>
</context-param>
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
Estaba usando la implementación de mojarra para la compilación y confiaba en apache tomcat para el tiempo de ejecución. Pero tomcat usa la implementación de myfaces. Entonces tenía que incluir mojarra impl jar en WEB-INF / lib para resolver el problema
Yo estaba con el mismo problema. Cuando traté de ejecutar un archivo .html con Eclipse usando Tomcat7 como el servidor local, recibí el error 404 en el navegador. Y en la consola de Eclipse estaba mostrando el error "ClassNotFoundException: com.sun.faces.config.ConfigureListener".
El problema era la biblioteca de Mojarra (.jar) que estaba usando en mi proyecto Dynamic Web. Estaba usando javax.faces-2.3.0-m04.jar.
-> Solución:
Descargue una versión anterior en los repositorios de Mojarra https://maven.java.net/content/repositories/releases/org/glassfish/javax.faces/ . En mi caso, descargué la versión 2.2.7 (javax.faces-2.2.7.jar).
Luego creé un nuevo proyecto de Web dinámica en Eclipse usando JSF v2.0 y se le asignó el archivo javax.faces-2.2.7.jar en la sección de la biblioteca.