6

Eclipseからテストを実行しようとしていますJUnitが、これらのテストを実行しているときにClassNotFound例外が発生します

完全なスタックトレースは次のとおりです。

java.lang.NoClassDefFoundError:of原因:java.lang.ClassNotFoundException:of at java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)at java.security.AccessController.doPrivileged(Native Method)atjava.net。 URLClassLoader.findClass(URLClassLoader.java:190)at java.lang.ClassLoader.loadClass(ClassLoader.java:307)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)at java.lang.ClassLoader.loadClass (ClassLoader.java:248)スレッド「main」の例外

私はこれをグーグルで検索し、何人かの男がこの問題に直面していることを発見しましたが、彼らの誰も私の問題を解決していないようです。これはおそらくプラットフォームの違いが原因である可能性があります

私の開発プラットフォームは次のとおりです

OS: Windows XP
Eclipse JUNO
JUnit4
Maven2

その間、mavenを使用してこのプロジェクトを実行すると、完全に正常に実行されます。

私にとって最も奇妙な部分は、ClassNotFound例外がスローされるクラスの名前です。クラスの名前はですof

これは私を完全に吹き飛ばすものです。

また、上記のスタックトレースが何であれ、エラーが発生したときに取得するのはそれだけです。

私はこの問題で2日間立ち往生しています、どんな助けでも大歓迎です。

4

9 に答える 9

12

私はここと他の投稿で言及されているすべてを試しました。人々が提供した解決策のいくつかは次のとおりです。

  1. テストの出力フォルダを変更します
  2. Mavenからテストコンパイルを実行するプロジェクトのカスタムビルダーを作成します
  3. プロジェクトビルドパスの[注文とエクスポート]リストでMavenの依存関係を上位に移動します

たくさんありましたが、私が見つけたのは次のとおりです。開発環境を閉じます。プロジェクトで使用されているjarファイルをローカルのMavenリポジトリーから削除します。IDEを開きます。プロジェクトをビルドします。テストを実行します。

何時間もキーボードに頭をぶつけて、提案された解決策に従った後、これはうまくいきました!それでも問題が解決しない場合は、上記の解決策を検索してみてください。

于 2013-05-17T14:54:18.897 に答える
7

Eclipseでプロジェクト名を右クリックし、[Maven]-> [プロジェクトの更新]を選択すると、この問題が解決することがよくあります。

于 2014-07-09T14:57:31.083 に答える
1

この質問はすでに回答済みですが、ここで解決策を共有します。

  1. 'src / test/java'の出力フォルダーが'target/ test-classes'に設定されていることを確認してください。これは他の多くの投稿で述べられているため、ここでは繰り返しません。

  2. それでも機能しない場合は、単体テストクラスのコンパイル中にエラーが発生している可能性があります。「ウィンドウ」->「エラーログ」ビューを開くと、エラーメッセージの詳細が表示されます。

私の場合、以前にダウンロードした依存関係jarがネットワークの問題のために何らかの理由で破損しているため、ローカルリポジトリからjarを削除し、「maven」->「updateconfiguration」を使用して再度ダウンロードします。

その後、すべてが機能します!

于 2014-01-23T05:47:32.157 に答える
1

通常、ビルドするときは、[実行構成]タブで[テストをスキップ]をオンにします。代わりに、[テストをスキップ]をオフにして、プロジェクトをビルドします。junitsは正常に機能するはずです。この解決策は私のために働いた。プロジェクトを構築するための構成タブを実行します

于 2016-07-28T07:30:29.477 に答える
0

EclipseでパースペクティブをJUnitに切り替えて、テストを再実行してみてください

于 2013-05-14T08:13:54.173 に答える
0

私が見たすべての答えと他の投稿にもかかわらず。私の努力の要約を示します:

このプロジェクトの構成が同じワークスペース内の他のプロジェクトに適合していない可能性があります。(これをどのように解決するかはおそらく別の質問です)

したがって、このワークスペースを閉じて、このプロジェクトのみのクリーンなワークスペースを開始します。

于 2015-06-08T04:26:23.293 に答える
0

同じ問題に直面していました。この簡単な手順で解決しました。

  1. プロジェクトのビルドパスからJUnitを削除し、再度追加します。

  2. [自動ビルド]に設定すると、ワークスペースが再度ビルドされます。[自動ビルド]に設定されていない場合は、プロジェクトをビルドします。あなたの問題は解決されるべきです。

于 2015-09-29T11:33:49.173 に答える
0

たとえば、使用するクラスを追加する必要があります(spring-boot):

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {DataPoint.class})
public class DataPointTest {

    @Test
    public void TestBuilder() {
        DataPoint.Builder builder = new DataPoint.Builder();

        DataPoint dataPoint = builder.withCount(4).withFirst(1).build();

        assert dataPoint.getCount() == 4 && dataPoint.getFirst() == 1;
    }

}
于 2016-10-15T00:36:46.373 に答える
0

POM.xmlで情報を確認することもできます

私も同じ問題を抱えていました。コードのセットアップ中にプロジェクト名が一致しませんでした。

<groupId>CucumberTest</groupId>
<artifactId>com.ProjectName</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>com.ProjectName</name>
<url>http://maven.apache.org</url>

POM.xmlでプロジェクト名を変更した後、正常に機能していました。

于 2019-11-27T13:43:29.703 に答える