1. ホーム

NoClassDefFoundError: org/hamcrest/SelfDescribing JUnit-4.11でエラー。

2022-02-08 05:19:22

今日、JUnitを使おうと思い、最新版の4.11をダウンロードしたのですが、いつも報告されるのは java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 一般的な解決策は、下位のバージョンに切り替えればよいのです。hamcrestのパッケージが無いという人もいます。公式サイトに行って改めて調べてみると、このような段落がありました。

  • junit.jar すぐに始められるシンプルなオールインワンソリューション。 バージョン4.11から、Hamcrestはこのjarに含まれなくなりました。
  • junit-dep.jar 異なるバージョンのHamcrestを使用できるようにします。

黒い下線部にご注目ください。4.1.1ではhamcrestパッケージが使えなくなったということなので、作者が何を考えているのか分かりません。


最適な解決策は


インポートパッケージであるスキームを使用する。 junit.jar + hamcrest-core.jar + hamcrest-library.jar

<スパン または junit-dep.ajr+hancrest-all.jar

この2つのインポートメソッドは、重複したパッケージのインポートを避けようとするものですが、それでも使用時にコンフリクトが発生します。パッケージ内の様々な型やドキュメントを見ると、いくつかのクラス(例えばアサーションis())は org.hamcrest.Mathchers と org.hamcrest.core の両方に出現しているので、それらを使用する際に導入に注意を払う必要があることがわかります。