88

junitテストコードのJavaでこのエラーが発生します。ネットで調べたところ、クラスパスにjunit.jarを追加する必要があると表示されました。

Eclipseでは、プロジェクトプロパティウィンドウのクラスパスに追加しましたが、それでも初期化エラーが発生します。私は何をすべきか..?

これはエラーの完全なトレースです。

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 25 more
4

17 に答える 17

110
  1. パッケージエクスプローラーでプロジェクトを右クリックし、[プロパティ]をクリックします
  2. 「Javaビルドパス」>「ライブラリ」タブに移動します
  3. 「ライブラリの追加」ボタンをクリックします
  4. JUnitを選択します
  5. [次へ]をクリックします。
  6. ドロップダウンボタンでJUnit4または他の新しいバージョンを選択します。
  7. [完了]をクリックします。
  8. それならOK。
于 2010-11-19T18:13:01.917 に答える
20
  1. Eclipse->トップメニュー->実行->構成の実行
  2. テストのすべてのオカレンスを削除します。テストはYourTest.Method_1()として表示される場合があります。それも削除します。
  3. 再実行します。Eclipseに新しい構成を構築させます。

補遺:ローカルで「ユーザーライブラリ」を作成し、プロジェクトに追加しました。

hamcrest-core-1.3.jar

junit-4.12.jar

于 2016-10-11T22:51:27.627 に答える
12

JUnitWebサイトからJUnitjarをダウンロードしたが、Hamcrest jarをダウンロードし忘れた場合にも同じ問題が発生する可能性があります。両方が必要です(両方をダウンロードするように指示されていますが、スキップしました!おっと)

于 2013-02-25T23:53:20.867 に答える
11

Mavenで使用する場合は、アーティファクトjunit:junitを例4.8.2から4.11に更新します。

于 2015-04-13T18:00:15.273 に答える
8

Eclipseでは、以下の手順に従って上記の問題を解決することができました。

実行するテストファイルを右クリックし、 [実行]->[実行構成]->[クラスパス]タブの選択->ブートストラップエントリの選択->[詳細設定]の選択->[ライブラリの追加]の選択->[JUnitの選択]->[次へ]->ドロップダウンからJUnit4を選択します->終了

次に、[適用]->[実行]を選択します

于 2018-08-29T11:00:03.953 に答える
2

org / hamcrest/SelfDescribingクラスはランタイムクラスパスにありません。

于 2010-11-19T19:35:43.003 に答える
2

これらの手順は、Filterクラスが欠落していることをエラーが示したときに機能しました(この誤って複製された質問で報告されているように:JUnit:NoClassDefFoundError:org / junit / runner / operation / Filter):

  1. プロジェクトでJUnit4を1回だけ参照するようにしてください(Mavenの性質も削除しましたが、この手順が問題の解決に影響を与えるかどうかはわかりません)
  2. 単体テストを含むファイルを右クリックし、[プロパティ]を選択して、[実行/デバッグ]設定で、そのファイルの起動構成からすべてのエントリを削除します。[適用]をクリックして閉じます。
  3. 単体テストを含むプロジェクトを右クリックし、[プロパティ]を選択して、[実行/デバッグ]設定で、起動構成からJUnitに関連するすべてのエントリを削除します。[適用]をクリックして閉じます。
  4. プロジェクトをクリーンアップし、テストを実行します。

このソリューションのヒントを教えてくれたこれらの回答に感謝します:https ://stackoverflow.com/a/34067333/5538923およびhttps://stackoverflow.com/a/39987979/5538923)。

于 2018-05-21T14:56:57.847 に答える
1

以下の手順を試してください。

  1. プロジェクトの実行構成に移動します。[クラスパス]タブで、JUnitライブラリを追加します。
  2. 同じ手順を再試行します。

それは私のために働いた。

于 2012-01-11T09:22:46.720 に答える
1

同じ問題が発生しました。問題はテストクラスの@ContextConfigurationにあり、サーブレットコンテキストも読み込んでいました。変更するだけです。

@ContextConfiguration(locations = { "classpath*:**\*-context.xml", "classpath*:**\*-config.xml" })

に:

@ContextConfiguration(locations = { "classpath:**\*-context.xml", "classpath:**\*-config.xml" })

以上です。この方法では、テストパスにパターン*-context.xmlが含まれるすべてのファイルのみをロードします。

于 2012-05-03T08:37:46.010 に答える
1
  1. 環境変数JUNIT_HOMEがc:\JUNITに設定されていることを確認してください。
  2. 次に、実行構成で>クラスパスを選択>外部jarを追加しますjunit-4.11.jar
于 2013-07-06T13:06:08.137 に答える
1

この理由は、「hamcrest-core」jarがjunit jarに直接付属していないため、クラスパスに含まれていないためです。したがって、これを解決するには2つの方法があります。

  1. プロジェクト->ビルドパス->ライブラリを追加してjunitを選択します(junitとhamcrest-coreの両方が含まれています)
  2. Mavenリポジトリからhamcrest-coreをダウンロードし、これをクラスパスに追加します。
于 2014-09-26T04:30:50.500 に答える
1

私の2セントを他の答えに追加します。

src/main/java通常の代わりに、万が一テストクラスを作成していないかどうかを確認してくださいsrc/test/java。前者は、何らかの理由で新しいテストクラスを作成する場合のEclipseのデフォルトであり、見落とされる可能性があります。それはそれと同じくらい簡単かもしれません。

于 2019-07-29T07:31:37.517 に答える
1

私の場合、ライブラリをClasspathではなくModulepathに追加しました。

JUnitがクラスパスに正しく追加されている場合にのみ機能します。

ここに画像の説明を入力してください

于 2020-03-28T18:22:21.767 に答える
1

私はこのビデオをフォローしていました:https ://www.youtube.com/watch?v = WHPPQGOyy_Y が、テストの実行に失敗しました。その後、ダウンロードしたファイルをすべて削除し、写真の手順を使用してJUnitを追加しました。

ここに画像の説明を入力してください

于 2020-08-03T11:08:49.047 に答える
0

このエラーは、hamcrest-libraryまたはhamcrest-coreの2つのバージョンがクラスパスに存在する場合にも発生します。

pomファイルでは、余分なバージョンを除外することができ、それは機能します。

于 2015-03-31T11:24:31.400 に答える
0

Junit4.11.jarでさえhamcrest-core.jarを持っていません。クラスパスに明示的に追加したところ、問題は解決しました。

于 2016-09-24T20:42:50.930 に答える
-1

Javaのバージョンが複数ある場合は、プログラムに干渉する可能性があります。

JCreatorをダウンロードすることをお勧めします。

その場合は、「構成」、「オプション」、および「JDKプロファイル」をクリックします。リストから古いバージョンのJavaを削除します。次に、再生ボタンをクリックします。プログラムが表示されます。

そうでない場合は、ctrl + alt + Oを押してから、再生ボタンをもう一度押します。

于 2011-09-11T14:37:07.807 に答える