J'essaie de créer une application Web JSF simple à l'aide de MyFaces v 2.1 avec WebSphere Application Server Community Edition v3.0.0.1 et Eclipse Juno mais lorsque j'essaie d'exécuter l'application, l'erreur suivante est renvoyée
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
Vraisemblablement, l'erreur se produit parce que les fichiers JAR MyFaces ne se trouvent pas dans le chemin d'accès aux classes, mais je ne peux pas comprendre où je me trompe car le chemin de génération dans Eclipse contient les fichiers JAR requis. J'ai également essayé de copier les fichiers jar dans le répertoire WEB-INF/lib mais en vain.
La capture d'écran ci-dessous montre la structure du projet ainsi que les bibliothèques.
Existe-t-il quelque chose de spécifique que je dois faire dans Eclipse ou WASCE pour inclure les fichiers jar ou le problème se situe-t-il ailleurs?
Caused by: Java.lang.ClassNotFoundException: com.Sun.faces.config.ConfigureListener
La classe manquante fait partie de Mojarra , qui est en fait le concurrent de MyFaces .
Vous ne devriez pas du tout avoir besoin de cette classe lorsque vous utilisez MyFaces. Cette exception peut avoir les causes possibles suivantes:
Il y a une entrée <listener>
Définie manuellement dans le web.xml
De l'application Web ou le web-fragment.xml
De l'un des fichiers JAR déployés dans /WEB-INF/lib
Qui fait référence à cette classe d'écouteur spécifique à Mojarra.
Il y a quelque part un fichier Mojarra .tld
Lâche dans le chemin de classe (très peu probable, qui pourrait extraire un fichier JAR et mettre son contenu lâche dans le chemin de classe?). Les fichiers TLD sont auto-initialisés et peuvent contenir une entrée <listener>
Qui peut déclencher l'enregistrement automatique d'une implémentation ServletContextListener
(telle que Mojarra ConfigureListener
).
Ces conflits peuvent être résolus simplement en les supprimant.
J'ai déployé une application web avec Myfaces sur un serveur Jetty et il a fallu utiliser un écouteur et un paramètre d'initialisation supplémentaire pour utiliser les facettes:
<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>
J'étais avec le même problème. Lorsque j'ai essayé d'exécuter un fichier .html avec Eclipse en utilisant Tomcat7 comme serveur local, j'ai reçu l'erreur 404 sur le navigateur. Et dans la console d'Eclipse montrait l'erreur "ClassNotFoundException: com.Sun.faces.config.ConfigureListener".
Le problème était la bibliothèque Mojarra (.jar) que j'utilisais dans mon projet Dynamic Web. J'utilisais javax.faces-2.3.0-m04.jar.
-> Solution:
Téléchargez une version plus ancienne sur les référentiels de Mojarra https://maven.Java.net/content/repositories/releases/org/glassfish/javax.faces/ . Dans mon cas, j'ai téléchargé la version 2.2.7 (javax.faces-2.2.7.jar).
J'ai ensuite créé un nouveau projet Web dynamique dans Eclipse à l'aide de JSF v2.0 et affecté avec le fichier javax.faces-2.2.7.jar dans la section bibliothèque.
J'utilisais l'implémentation de mojarra pour la compilation et je comptais sur Apache Tomcat pour l'exécution. Mais Tomcat utilise l'implémentation myfaces. Il a donc fallu inclure le pot d'im mojarra dans le WEB-INF/lib pour résoudre le problème