junit
テストを実行している間、eclipse
私はこれを得ていますException
:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
junit.jar
ライブラリファイルを追加しました。
junit.jar のさまざまなバージョンを試しました: 4.4
、4.8
など。
この例外を修正するにはどうすればよいですか?
junit
テストを実行している間、eclipse
私はこれを得ていますException
:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
junit.jar
ライブラリファイルを追加しました。
junit.jar のさまざまなバージョンを試しました: 4.4
、4.8
など。
この例外を修正するにはどうすればよいですか?
クラスパスに追加hamcrest-all-X.X.jar
します。
2015 年 2 月現在の最新バージョンは 1.3 です: http://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-all-1.3.jar&can=2&q=
JUnit GitHub チームの Web サイト ( https://github.com/junit-team/junit/wiki/Download-and-Install ) によるjunit.jar
と、 hamcrest-core.jar
JUnit 4.11 を使用する場合は両方ともクラスパスに必要です。
junit と hamcrest を含めるための Maven 依存関係ブロックを次に示します。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1.2</version>
<scope>test</scope>
</dependency>
<!-- Needed by junit -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
私のために働く:IntelliJ IDEA 13.1.1、JUnit4、Java 6
プロジェクト パスのファイルを変更しました: [PROJECT_NAME].iml
置換:
<library>
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
に:
<library name="JUnit4">
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
したがって、最終的な .iml ファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library name="JUnit4">
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
PS: ファイルを保存し、IntelliJ Idea に再読み込みさせないでください。一度だけ。
junit.jar には古い Hamcrest クラスのコピーが含まれているため、junit-dep.jar が必要です。
原則として、hamcrest がクラスパス上の他のテスト ライブラリの前にあることを常に確認してください。そのようなライブラリの多くには hamcrest クラスが含まれているため、使用している hamcrest バージョンと競合する可能性があります。これにより、説明しているタイプの問題のほとんどが解決されます。
クラスパスの問題のように聞こえるので、いくつかの方法があります。org/hamcret/SelfDescribing はどこから来たのですか? それはあなたのクラスですか、それとも別のjarファイルですか?
プロジェクトのビルド パスに移動し、[ライブラリ] タブでライブラリを追加してみてください。プロジェクトにJUnitを選択できるはずです。これは、JUnit jar ファイルをプロジェクトに含めることとは少し異なります。
JUnit テストの実行構成で、クラスパスを確認します。クラスパスがその SelfDescribeing クラスを認識できるように追加することで、おそらくこれを修正できます。Eclipse の実行オプションには、JUnit オプション用の異なるオプション セットがあります。
この問題が RCP プロジェクトで発生する場合、JUnit が明示的にインポートされていることが原因である可能性があります。
plugin.xml
下のDependencies
タブのエディターを確認し、インポートされたパッケージから削除して、必要なプラグインにorg.junit
追加します。org.junit
これは、コマンド ラインから Ant を実行したときに発生します。暗黙的なユーザー依存関係はクラスパスの最後に追加され、プロジェクトで追加されたクラスパスよりも優先されます。-nouserlib
フラグ付きで Ant を実行します。暗黙の依存関係はクラスパスから除外されます。
問題は、 JDKではなくJREを指すように Eclipse をセットアップする場合です。JREはフォルダーにありますが、そうではありません:)したがって、解決策は、EclipseにインストールされているJREを確認し、既存のものを削除して、 JDKを指す新しいものを作成することです。junit4.jar
lib/ext
hamcrest.jar
私は同じ問題を抱えていました。解決策は、ビルドパス/プラグインにjar org.hamcrest.core_1xxを追加することです。Eclipse/プラグインで見つけることができます。