0

Mavenを使用してJavaで新しいプロジェクトを作成しています。MongoとHadoopを使用する必要があります。しかし、次の依存関係を使用し、tomcat:runを使用してアプリケーションを実行しようとすると、Throws load()例外が発生します。

依存関係は

        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-hadoop-core_1.0.2</artifactId>
            <version>1.0.0</version>
        </dependency>

エラーは次のとおりです。

重大:サーブレット/ MongoRESTApiがload()例外をスローしましたjava.lang.ClassCastException:org.apache.jasper.servlet.JspServletをjavax.servlet.Servletにキャストできません

どうすればこれを解決できますか?

前もって感謝します

4

1 に答える 1

0

あなたはおそらくjar地獄の問題に遭遇しています:

Javaアプリケーションの開発者またはデプロイヤが、誤って2つの異なるバージョンのライブラリをシステムで使用できるようにしてしまいました。

mongo-hadoop-core_1.0.2依存関係により、さらに推移的な依存関係が導入された可能性があります。おそらく、除外する必要のある2番目のサーブレットAPIです。
誤った依存関係を見つけるのは面倒な場合があるため、ビルドフェーズにJBossTattletaleプラグインを含めることをお勧めします。multiplejarsレポートを構成し、とを有効 failOnWarnにしfailOnErrorます。生成されたレポートには、複数のjarファイルにあるクラスが一覧表示されます。これから、jarhellから脱出するためにどの依存関係を除外する必要があるかがわかります。

于 2013-03-09T09:54:47.757 に答える