1

Java の「動的 Web プロジェクト」をエクスポート用に Eclipse にパッケージ化すると、作成された WAR をサーバー上で起動でき、アプリケーションが正しくロードされます。

ただし、Maven (Jenkins を使用または使用しない) を使用してプロジェクトをビルドしようとすると、ビルドは成功したと主張しますが、アプリをロードしようとすると次のエラーが発生するため、結果の戦争は何らかの形で台無しになります。

**HTTP Status 500 - exception**

org.apache.jasper.JasperException: java.lang.ClassCastException: 
  org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
.blah blah blah Stacktrace goes here blah blah....

java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
. blah blah blah  Stacktrace goes here blah blah....

これは、サーバー上にあるものとPOMにあるものとの間のTomcatバージョンの不一致が原因である可能性があることを読みましたが、両方がv6.0.26であることを確認しました。

これを引き起こしている可能性のある何か他のものがありますか?私のPOM、私のMaven構成、またはまったく異なるもので何か他のものはありますか?

4

1 に答える 1

4

これは間違いなくバージョンの非互換性が原因です。サーバーには、maven などによって異なるバージョンに持ち込まれた jar が含まれている場合があります。サーバーには commons-util-1.1.jar が含まれており、maven は commons-util-1.2.jar を WEB-INF/lib/ にダウンロードします。

2 つの WEB-INF/lib/ ディレクトリ (Eclipse からのディレクトリと Maven からのディレクトリ) を比較してみてください。

「DefaultAnnotationProcessor は org.apache.AnnotationProcessor にキャストできません」というメッセージを Google で検索すると、どの jar が問題を引き起こしているかを特定し、それに集中するのに役立ちます (ただし、それだけではない可能性があります。jar は別の jar を非表示にする場合があります:-) )

TotalCommander ( http://www.ghisler.com/ ) を使用してディレクトリとすべての sudirs およびファイルを比較し、1 つのコマンドで何が違うのかを直接確認することをお勧めします。(すべての jar でクラスを検索するためにも使用できます)

よろしく、 Zied Hamdi - http://1vu.fr

于 2013-07-20T00:30:11.507 に答える