jsf-2 - RichFaces4 启动失败,出现 java.lang.IllegalArgumentException : duplicate key: class javax. faces.convert.DoubleConverter

标签 jsf-2 richfaces

对于没有 Maven 的 RichFaces4,这似乎不是一项简单的任务,我下载了 myfaces-2.0.9 jar 和 richfaces 4.0.0,并添加了 sac-1.3.jar、guava-r08.jar 和 cssparser-0.9.5.jar .

我工作的环境是 Tomcat 6.0,但是当我运行 tomcat 时,我无法设置一个简单的基于 richfaces4 的 Web 应用程序,我遇到了不同的问题。我添加了一些与以下错误相关的 jar,但我收到另一个转换器的另一个重复 key 错误,

另一方面:我还必须从 tomcat 中删除 tomohawk,因为我正在使用 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)

最佳答案

如果您还在类路径中包含 RichFaces 源代码 JAR 文件,就会发生这种情况。它们不属于 webapp 的运行时类路径。它是文件名以 -source.jar 结尾的文件。您应该从 /WEB-INF/lib删除它们,并在必要时将它们放在其他不会出现在 webapp 的运行时类路径中的地方。

罪魁祸首是 csv.xml 文件,它位于 richfaces-components-ui-4.0.0 的 /META-INF 文件夹中。 Final.jarrichfaces-components-ui-4.0.0.Final-source.jar 文件。该文件定义了标准转换器和验证器。但是,因为该文件现在在类路径中出现了两次,它被读取了两次,导致了这个重复键异常。


与具体问题无关,因为您使用的是 MyFaces 而删除 Tomahawk 是没有争议的。 MyFaces JSF 实现不包含与 Tomahawk 相同的组件。它只是另一个 JSF 实现,技术上是 Mojarra 的竞争对手。 Tomahawk 是一个独立的组件库,它在标准 JSF 实现之上提供更多增强组件,并且可以在每个 JSF 实现之上使用。

关于jsf-2 - RichFaces4 启动失败,出现 java.lang.IllegalArgumentException : duplicate key: class javax. faces.convert.DoubleConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7681582/

相关文章:

html - RichFaces 页面主题——包含 CSS 文件?

jsf-2 - 如何关闭 rich :popupPanel on press of Esc key?

css - JSF1005 : Cannot instantiate validator of type javax. faces.Bean

java - JSF 错误 "Expected a child component type ... Found null."

jsf - 将 Web 项目从 JSF 1.1 更新到 JSF 2.x 的最佳策略是什么?

JSF 2.0 注入(inject)不同范围的托管 bean

java - 在 Hibernate/JSF 应用程序中从 MySQL 数据库中检索 Blob

jsf-2 - 如何在可排序数据表中按 JSF 标签排序

java - 如何在服务器 (Tomcat 7) 内创建文件夹?

jsf - 如何检测和删除(在 session 期间)不能被垃圾收集的未使用的 @ViewScoped bean