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コレクションフレームワークに依存していることがわかりました。ただし、以下に示すように、関連するすべてのライブラリをプロジェクトとクラスにインポートしました。
なぜこれが起こっているのか誰か知っていますか?
確かではありませんが、エラーは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のユニバースの使用を計画している場合は、それらがすべて互換性があることを確認する必要があります。
この依存関係をプロジェクトに追加するだけです。
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
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>