jsf-2 - que - richfaces showcase
El inicio de RichFaces4 falla con java.lang.IllegalArgumentException: clave duplicada: class javax.faces.convert.DoubleConverter (1)
Esto puede suceder si también incluye los archivos JAR del código fuente de RichFaces en el classpath. No pertenecen al classpath en tiempo de ejecución de webapp. Son los que tienen un nombre de archivo que termina en -source.jar
. Debes eliminarlos de /WEB-INF/lib
y colocarlos si es necesario en otro lugar que no termine en el classpath de tiempo de ejecución de webapp.
El culpable es el archivo csv.xml
que está presente en la carpeta /META-INF
de los richfaces-components-ui-4.0.0.Final.jar
y richfaces-components-ui-4.0.0.Final-source.jar
. Ese archivo define los convertidores y validadores estándar. Sin embargo, debido a que ese archivo ahora aparece dos veces en la ruta de clase, se ha leído dos veces, lo que da como resultado esta excepción de clave duplicada.
Sin relación con el problema concreto, eliminar Tomahawk porque estás usando MyFaces no es un argumento. La implementación de MyFaces JSF no contiene los mismos componentes que Tomahawk. Es solo otra implementación de JSF y técnicamente el competidor de Mojarra. Tomahawk es una biblioteca de componentes independiente que ofrece componentes más mejorados además de la implementación estándar de JSF y se puede utilizar como buena en la parte superior de cada implementación de JSF.
Esto parece no ser una tarea sencilla con RichFaces4 sin Maven, descargo myfaces-2.0.9 jar y richface 4.0.0 y agregué sac-1.3.jar, guava-r08.jar y cssparser-0.9.5.jar.
El entorno en el que estoy trabajando es Tomcat 6.0, pero no puedo configurar una aplicación web sencilla basada en richfaces4 cuando ejecuto tomcat. Tengo problemas diferentes. Agregué algunos archivos relacionados con el siguiente error, pero recibo otro error de clave duplicada para otro convertidor,
En otra nota: también tuve que eliminar tomohawk de tomcat ya que estaba usando mis caras. Por favor ayuda.
java.lang.IllegalArgumentException: duplicate key: class javax.faces.convert.DoubleConverter
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:115)
at com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:72)
at com.google.common.collect.ImmutableMap$Builder.fromEntryList(ImmutableMap.java:221)
at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:207)
at org.richfaces.javascript.ClientServiceConfigParser.parseConfig(ClientServiceConfigParser.java:54)
at org.richfaces.application.ValidatorModule.createClientScriptService(ValidatorModule.java:68)
at org.richfaces.application.ValidatorModule.configure(ValidatorModule.java:62)
at org.richfaces.application.ServicesFactoryImpl.init(ServicesFactoryImpl.java:28)
at org.richfaces.application.InitializationListener.createFactory(InitializationListener.java:136)
at org.richfaces.application.InitializationListener.onStart(InitializationListener.java:110)
at org.richfaces.application.InitializationListener.processEvent(InitializationListener.java:152)
at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2144)
at org.apache.myfaces.application.ApplicationImpl.access$000(ApplicationImpl.java:118)
at org.apache.myfaces.application.ApplicationImpl$SystemListenerEntry.publish(ApplicationImpl.java:2334)
at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:554)
at org.apache.myfaces.webapp.AbstractFacesInitializer._dispatchApplicationEvent(AbstractFacesInitializer.java:254)
at org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:139)
at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:111)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4172)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4671)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Oct 6, 2011 7:13:29 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Oct 6, 2011 7:13:29 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/testRichFaces4] startup failed due to previous errors
Oct 6, 2011 7:13:29 PM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class org.apache.myfaces.webapp.StartupServletContextListener
java.lang.NullPointerException
at org.richfaces.application.CacheProvider.release(CacheProvider.java:86)
at org.richfaces.application.ServicesFactoryImpl.release(ServicesFactoryImpl.java:19)
at org.richfaces.application.ServiceTracker.release(ServiceTracker.java:100)
at org.richfaces.application.InitializationListener.onStop(InitializationListener.java:144)
at org.richfaces.application.InitializationListener.processEvent(InitializationListener.java:154)
at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2144)
at org.apache.myfaces.application.ApplicationImpl.access$000(ApplicationImpl.java:118)
at org.apache.myfaces.application.ApplicationImpl$SystemListenerEntry.publish(ApplicationImpl.java:2334)
at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:554)
at org.apache.myfaces.webapp.AbstractFacesInitializer._dispatchApplicationEvent(AbstractFacesInitializer.java:254)
at org.apache.myfaces.webapp.AbstractFacesInitializer.destroyFaces(AbstractFacesInitializer.java:285)
at org.apache.myfaces.webapp.StartupServletContextListener.contextDestroyed(StartupServletContextListener.java:153)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4211)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4846)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4716)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Oct 6, 2011 7:13:29 PM com.sun.faces.config.ConfigureListener contextDestroyed
SEVERE: Unexpected exception when attempting to tear down the Mojarra runtime
java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:804)
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:306)
at com.sun.faces.config.InitFacesContext.getApplication(InitFacesContext.java:108)
at com.sun.faces.config.ConfigureListener.contextDestroyed(ConfigureListener.java:327)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4211)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4846)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4716)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)