1

私のセットアップは、IntelliJ IDEA 11 の java 1.6.0_45、richfaces 4.3.2、jsf 2.1.5、tomcat 7.0.30 です。

次の例外に直面しています:

  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)
    ...

ここで検索しましたが、見つかった最も近い問題は次のとおりです。

-ここここ

どちらの投稿も基本的に同じ問題に対処しています。ファイルは、プロジェクトのフォルダー内のcsv.xml複数の JAR で参照されています。/WEB-INF/liblibディレクトリ内の各ファイルを「jar tf」する小さなスクリプトを作成し、出力をgrep forにパイプしてcsv.xml、1つのエントリだけを表示します。

これが私の/WEB-INF/libフォルダのスクリーンショットです:

それでもこの例外が発生するのはなぜですか?どうすれば解決できますか?

使用されている私のクラスパスは次のとおりです。

-classpath "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/deploy.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/dt.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/javaws.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/jconsole.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/management-agent.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/plugin.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/sa-jdi.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/alt-rt.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/alt-string.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/apple_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/dnsns.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/localedata.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunjce_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunpkcs11.jar:/data/devl/projects/cannon/register/web/WEB-INF/classes:/data/devl/apache-tomcat-7.0.30/bin/tomcat-juli.jar:/data/devl/apache-tomcat-7.0.30/bin/bootstrap.jar:/data/devl/apache-tomcat-7.0.30/bin/commons-daemon.jar:/data/devl/apache-tomcat-7.0.30/lib/tomcat-coyote.jar:/data/devl/apache-tomcat-7.0.30/lib/annotations-api.jar:/data/devl/apache-tomcat-7.0.30/lib/el-api.jar:/data/devl/apache-tomcat-7.0.30/lib/jasper-el.jar:/data/devl/apache-tomcat-7.0.30/lib/ecj-3.7.2.jar:/data/devl/apache-tomcat-7.0.30/lib/jasper.jar:/data/devl/apache-tomcat-7.0.30/lib/servlet-api.jar:/data/devl/apache-tomcat-7.0.30/lib/catalina-ha.jar:/data/devl/apache-tomcat-7.0.30/lib/tomcat-api.jar:/data/devl/apache-tomcat-7.0.30/lib/tomcat-dbcp.jar:/data/devl/apache-tomcat-7.0.30/lib/jsp-api.jar:/data/devl/apache-tomcat-7.0.30/lib/tomcat-util.jar:/data/devl/apache-tomcat-7.0.30/lib/catalina.jar:/data/devl/apache-tomcat-7.0.30/lib/tomcat-jdbc.jar:/data/devl/apache-tomcat-7.0.30/lib/catalina-tribes.jar:/data/devl/apache-tomcat-7.0.30/lib/catalina-ant.jar:/data/devl/apache-tomcat-7.0.30/lib/tomcat-i18n-es.jar:/data/devl/apache-tomcat-7.0.30/lib/tomcat-i18n-fr.jar:/data/devl/apache-tomcat-7.0.30/lib/tomcat-i18n-ja.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/commons-beanutils-1.8.3.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/commons-codec-1.3.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/commons-collections-3.2.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/commons-digester-1.8.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/commons-logging-1.1.1.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/cssparser-0.9.5.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/guava-14.0.1.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/javax.faces-2.1.5.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/jhighlight-1.0.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/sac-1.3.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/richfaces-core-api-4.3.2.Final.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/richfaces-core-impl-4.3.2.Final.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/richfaces-components-api-4.3.2.Final.jar:/data/devl/projects/cannon/register/web/WEB-INF/lib/richfaces-components-ui-4.3.2.Final.jar:/Applications/IntelliJ IDEA 11.app/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain org.apache.catalina.startup.Bootstrap始める

念のため、同じスクリプトを実行して、含まれているすべての tomcat パスでも「csv.xml」を検索しましたが、何も発生しませんでした。Javaホームの場所でも実行するのは少しやり過ぎだと思いました。

プロジェクトを戦争にもエクスポートしましたが、まだ同じ問題があります。war ファイルを展開し、/WEB-INF/lib ディレクトリを調べて、以下を見つけました。

これは、どの jar が使用されているかを正確に示す必要があります。そして、私が知る限り、これらの jar ファイルはいずれも、豊富な顔のライブラリと競合するべきではありません。このディレクトリに対して csv.xml 検索スクリプトを実行したところ、やはり 1 つのエントリしか見つかりませんでした。

4

2 に答える 2

1

Web アプリケーションのランタイム クラスパスは、/WEB-INF/lib. /libまた、特にサーバー独自のフォルダー、およびサーバー固有でサーバー側で構成可能な「共通」および「共有」ライブラリもカバーします。また、JRE/lib/lib/extフォルダーについても説明します。

通常、これらのフォルダーは、開発者が触れないようにしてください。どうやら、それらの場所の 1 つに RichFaces JAR のコピーがあるようです。少なくとも、適切な状態でこの例外が発生し続けるという事実は、これを/WEB-INF/lib確認します。ランタイム クラスパスがカバーする正確なローカル ディスク ファイル システム パスを把握するには、テスト バッキング Bean のコンストラクターなど、Web アプリケーションでこのコードをデバッグするためだけに実行します。

System.out.println("The current runtime classpath covers the following paths:");
for (URL url : Collections.list(Thread.currentThread().getContextClassLoader().getResources(""))) {
   System.out.println(url);
}

別の考えられる原因は、実行していると思われるコードを実行していないことです。IDE で[エクスポート] > [WAR]を選択し、WAR を抽出してライブラリを調べます。または、ランタイム サーバーの deploy フォルダーを調べて、実行時/WEB-INF/libに実際に使用されているフォルダーを確認します。ビルド中にローカル ディスク ファイル システムの別の場所から追加の JAR を含めるようにプロジェクトを構成した可能性があります。IntelliJ はやっていませんが、EclipseではプロジェクトのDeployment Assemblyプロパティで制御できます。おそらく、JSF や RichFaces ライブラリのコンパイル/ランタイムの問題を修正するためのヘッドレスの試みで、そのような設定をいじり、JAR を単に/WEB-INF/libが正しい方法でしょう。

于 2013-06-12T14:01:51.003 に答える
-1

IceFacesと一緒に行きましょう。このがらくたに対処するのと同じくらい強力で、はるかに簡単です! 私は瓶を所定の位置に落とし、離れました。

于 2013-06-12T17:13:31.883 に答える