web-dev-qa-db-ja.com

java.lang.NoClassDefFoundError:org / Apache / commons / collections / Transformer

Apache Commons BeanUtilsライブラリから次のエラー_Java.lang.NoClassDefFoundError: org/Apache/commons/collections/Transformer_ BeanMapを使用しようとしています。

次のコードから生成されます:BeanMap studentBeanMap = new BeanMap(cohortStudentData.get(row));cohortStudentDataはBeanのリストです。

Apache DBUtilsのBeanListHandlerを使用して、データベースからBeanのリストを作成しています。

this および this のバグレポートから、BeanMapがApacheコレクションフレームワークに依存していることがわかりました。ただし、以下に示すように、関連するすべてのライブラリをプロジェクトとクラスにインポートしました。

External Library List

Import Statements

なぜこれが起こっているのか誰か知っていますか?

6
Ben

確かではありませんが、エラーはjarのバージョンが原因であると思います。最近、Apacheはjarの新しいバージョンのパッケージを変更しました。これは、新しい機能または完全に下位互換性のないものを実装するためです。たとえば、jar commons-beanutils-1.9.2.jarはcommons-collections-3.2.1.jarに依存し( this サイトによる)、commons-collections-4.4.0.jarを使用しています。 Apache jarのユニバースの使用を計画している場合は、それらがすべて互換性があることを確認する必要があります。

5
Ivan Perales M.

この依存関係をプロジェクトに追加するだけです。

    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
    </dependency>
5
zygimantus

commons-collections4-x.x.jarライブラリをクラスパスに追加して、もう一度実行してみてください。それが動作します。

以下からライブラリをダウンロード:https://mvnrepository.com/artifact/org.Apache.commons/commons-collections4/4.1 =

バージョン3.2.1の依存関係の追加はここで機能しているようです

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.1</version>
</dependency>
1
thedevd