Сбой запуска RichFaces4 с java.lang.IllegalArgumentException: дубликат ключа: класс javax.faces.convert.DoubleConverter - PullRequest
3 голосов
/ 07 октября 2011

Это кажется непростой задачей с RichFaces4 без Maven, я загружаю jars myfaces-2.0.9 и richfaces 4.0.0 и добавляю sac-1.3.jar, guava-r08.jar и cssparser-0.9.5.jar.

Средой, в которой я работаю, является Tomcat 6.0, но я не могу настроить простое веб-приложение на основе richfaces4, когда при запуске tomcat возникают разные проблемы.Я добавил несколько банок, связанных с приведенной ниже ошибкой, но я получил еще одну ошибку дублирующего ключа для другого конвертера,

С другой стороны: мне также пришлось удалить tomohawk из tomcat, так как я использовал myfaces.Пожалуйста, помогите.

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)

1 Ответ

7 голосов
/ 07 октября 2011

Это может произойти, если вы также включите в classpath исходные файлы RichFaces JAR. Они не принадлежат пути к классам во время выполнения веб-приложения. Это файлы с именем, оканчивающимся на -source.jar. Вы должны удалить их из /WEB-INF/lib и поместить их при необходимости в другое место, которое не попадает в путь к классам во время выполнения веб-приложения.

Виновным является файл csv.xml, который находится в папке /META-INF как файлов richfaces-components-ui-4.0.0.Final.jar, так и richfaces-components-ui-4.0.0.Final-source.jar. Этот файл определяет стандартные конвертеры и валидаторы. Однако, поскольку этот файл теперь появляется дважды в пути к классам, он был прочитан дважды, что приводит к исключению дублированного ключа.


Не связано с конкретной проблемой, удаление Томагавка, потому что вы используете MyFaces, не является аргументом. Реализация JSF MyFaces не содержит те же компоненты, что и Томагавк. Это просто еще одна реализация JSF и технически конкурент Mojarra. Tomahawk - это автономная библиотека компонентов, которая предлагает более расширенные компоненты в дополнение к стандартной реализации JSF и может использоваться в качестве дополнения к любой реализации JSF.

...