ClassNotFoundException: junit.framework.TestCase 无法通过 org.eclipse.xtext.junit_2.4.3.v201309030823 找到

2022-09-03 07:34:31

我对这个错误感到困惑:

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 平台在内部启动时),就会发生异常。这发生在我的任何代码执行之前

当我查看插件依赖项时,我可以看到它在类路径上,我也看到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?


答案 1

两点

第一

检查您的 .JUnit应该在那里,尽管这通常会显示在构建中。Project Properties->Java Build Path->Libraries (tab)

检查您的项目)。JUnit 应位于项目的“用户条目”下。Run Configurations->JUnit->Classpath (tab

第二

检查您是否有以下插件

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

[编辑]这让我走上了正确的轨道。要修复此错误,请确保目标平台中有 org.junit 3.8!

解释:上面的错误意味着 Eclipse 本身无法启动。JUnit运行器似乎依赖于JUnit 3.8。它不会被使用,但如果没有它,整个平台就无法初始化。

通过查看堆栈跟踪,您可以看到您是否有相同的问题:它是否包含 ?RemotePluginTestRunner.main

要修复此错误,请将 org.junit 3.8 捆绑包添加到目标平台。


答案 2

在您的项目中使用以下代码创建一个类 -

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。


推荐