web-dev-qa-db-ja.com

ClassNotFoundException:org.Eclipse.xtext.junit_2.4.3.v201309030823でjunit.framework.TestCaseが見つかりません

私はこのエラーに困惑しています:

Java.lang.NoClassDefFoundError: junit/framework/TestCase
    at Java.lang.ClassLoader.defineClass1(Native Method)
    at Java.lang.ClassLoader.defineClass(ClassLoader.Java:792)
    at org.Eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.Java:188)
    at org.Eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClassHoldingLock(ClasspathManager.Java:638)
...
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.Java:693)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.Java:429)
    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.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.Java:62)
    at org.Eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.Java:23)
...
Caused by: Java.lang.ClassNotFoundException: junit.framework.TestCase cannot be found by org.Eclipse.xtext.junit_2.4.3.v201309030823
    at org.Eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.Java:501)
    at org.Eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.Java:421)
    at org.Eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.Java:412)
    at org.Eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.Java:107)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:357)
    ... 78 more

Xtext DSLのテストをプラグインテストとして実行すると(つまり、新しいEclipseプラットフォームが内部で起動されると)、例外が発生します。これが発生しますbeforeコードが実行されます。

プラグインの依存関係を見ると、org.junit_4.11.0.v201303080030.jarがクラスパス上にあり、/.../workspace/.metadata/.plugins/org.Eclipse.pde.core/.external_libraries/org.junit_4.11.0.v201303080030/junit.jarもあることがわかります。

したがって、OSGisは確実にこの依存関係を解決できるはずです。

Xtext 2.4.3はJUnit 4.11で動作しますか、それともEclipseインストールをJUnit 4.10にダウングレードする必要がありますか?

14
Aaron Digulla

2点

最初

Project Properties->Java Build Path->Libraries (tab)を確認してください。これは通常ビルドに表示されますが、JUnitが存在するはずです。

プロジェクトのRun Configurations->JUnit->Classpath (tab)を確認してください。 JUnitはプロジェクトのユーザーエントリの下にある必要があります。

以下のプラグインがあることを確認してください

org.Eclipse.xtext.xbase.junit
org.junit (3.8.2)
org.junit (4.8.2)

[編集]これで正しい軌道に乗ることができました。エラーを修正するには、 target platform !にorg.junit 3.8があることを確認してください。

説明:上記のエラーは、Eclipse自体を開始できなかったことを意味します。 JUnitランナーはJUnit 3.8に依存しているようです。使用されませんが、それがないとプラットフォーム全体を初期化できません。

スタックトレースを見ると、同じ問題があるかどうかを確認できます:RemotePluginTestRunner.mainが含まれていますか?

エラーを修正するには、org.junit 3.8バンドルをターゲットプラットフォームに追加します。

6
A Paul

プロジェクトに以下のコードでクラスを作成します

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;


public class TestJunitLib {

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@Test
public void test() {
    fail("Not yet implemented");
}

}

Eclipseがコンパイラエラーを表示する場合の保存について。 Ctrl + 1(クイック修正)を押して、以下のいずれかを選択します-

a)jUnit 4ライブラリをビルドパスに追加b)プロジェクトのセットアップを修正

が表示されない場合は、EclipseインストールにjUnit 4プラグインがありません。その場合、EclipseにjUnitをインストールする方法についてググってください。

3
Aniruddh Joshi

Pom.xmlファイルに未解決の問題がある可能性があります。問題ビューを開き、それに応じて解決します。そうすれば、classnotfoundexceptionに遭遇することなく、テストケースを正常に実行できることが理想的です。

1
Raju Rao

詳細を確認する2つの可能な場所:

  1. あなたが言及したjarを逆コンパイルします(jar tvfまたはjavap -classpathとJARを指定します)、その依存関係を確認します
  2. 小切手 Eclipse.ini修正される可能性のあるいくつかの初期化変数。
0
Menachem