2012-07-09 45 views
1

我使用的是Tomcat 7,Richfaces 4.2.2,MyFaces 2.1.5和Facelets。當我啓動Tomcat我得到的錯誤:IllegalArgumentException:重複鍵(JSF)

An error occured while initializing MyFaces: duplicate key: class javax.faces.convert.BooleanConverter 

java.lang.IllegalArgumentException: duplicate key: class javax.faces.convert.BooleanConverter 
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:53) 
at org.richfaces.application.ValidatorModule.createClientScriptService(ValidatorModule.java:65) 
at org.richfaces.application.ValidatorModule.configure(ValidatorModule.java:60) 
at org.richfaces.application.ServicesFactoryImpl.init(ServicesFactoryImpl.java:27) 
at org.richfaces.application.InitializationListener.createFactory(InitializationListener.java:139) 
at org.richfaces.application.InitializationListener.onStart(InitializationListener.java:112) 
at org.richfaces.application.InitializationListener.processEvent(InitializationListener.java:157) 
at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43) 
at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2105) 
at org.apache.myfaces.application.ApplicationImpl.access$000(ApplicationImpl.java:118) 
at org.apache.myfaces.application.ApplicationImpl$SystemListenerEntry.publish(ApplicationImpl.java:2292) 
at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:537) 
at org.apache.myfaces.webapp.AbstractFacesInitializer._dispatchApplicationEvent(AbstractFacesInitializer.java:248) 
at org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:140) 
at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:111) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:866) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:842) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958) 
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

我看到this post提出的解決方案,但不同在這種情況下,我沒有「-source.jar」在我的類路徑中。

還有什麼可能是錯的?

回答

0

我和你是同一條船。

從你鏈接到後起飛,我檢查我所有的JAR文件在WEB-INF/lib和發現,無論是richfaces-components-ui-4.2.2.Final.jarrichfaces-ui-validator-ui-4.2.2.Final.jar包含文件META-INF/csv.xml它提供了違規類的映射(IntegerConverter,在我的情況)。

我宣佈以下Maven的依賴關係(與RichFaces的4.2.2Final BOM前面列出):

 
<dependency> 
    <groupId>org.richfaces.ui</groupId> 
    <artifactId>richfaces-components-ui</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.richfaces.core</groupId> 
    <artifactId>richfaces-core-impl</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.richfaces.ui.validator</groupId> 
    <artifactId>richfaces-ui-validator-ui</artifactId> 
</dependency> 

然而,richfaces-components-ui是一個超集的richfaces-ui-validator-ui(即,包含它與一些其他)。

您的配置/ RichFaces組件可能會有所不同,但問題就出在什麼在你的WEB-INF/lib目錄(無論從Maven的或其他方式到達那裏)......你可能已經包含不止一個JAR與csv.xml文件。

確定最小的一組依賴關係,錯誤將消失。

+0

我重新安裝了Eclipse,它工作。謝謝! – roggaioso 2012-08-03 01:19:17