1

Tomcat 7、Richfaces 4.2.2、MyFaces 2.1.5、および Facelets を使用しています。Tomcat を起動すると、次のエラーが表示されます。

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)

この投稿で提示された解決策を見ましたが、この場合は異なり、クラスパスに「-source.jar」がありません。

他に何が間違っている可能性がありますか?

4

1 に答える 1

0

私はあなたと同じ船でした。

リンク先の投稿から離陸して、WEB-INF/lib にあるすべての JAR ファイルを調べたところ、問題のあるクラス (私の場合は )のマッピングを提供するファイルが と に含まれているrichfaces-components-ui-4.2.2.Final.jarことがわかりました。richfaces-ui-validator-ui-4.2.2.Final.jarMETA-INF/csv.xmlIntegerConverter

次の Maven 依存関係を宣言しました (前述の RichFaces 4.2.2Final BOM を使用)。

<依存関係>
    <groupId>org.richfaces.ui</groupId>
    <artifactId>richfaces-components-ui</artifactId>
</依存>
<依存関係>
    <groupId>org.richfaces.core</groupId>
    <artifactId>richfaces-core-impl</artifactId>
</依存>
<依存関係>
    <groupId>org.richfaces.ui.validator</groupId>
    <artifactId>richfaces-ui-validator-ui</artifactId>
</依存>

ただし、richfaces-components-uiは のスーパーセットですrichfaces-ui-validator-ui(つまり、それといくつかの他のものを含みます)。

構成/RichFacesコンポーネントは異なる場合がありますが、答えはWEB-INF/libディレクトリの内容にあります(Mavenから取得したか、他の方法で取得したか)...csv.xmlファイルに複数のJARが含まれている可能性があります。

最小限の依存関係を特定すると、エラーは解消されます。

于 2012-07-20T17:42:35.393 に答える