在Eclipse中运行JUnit测试时,我得到这个错误:
Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
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)
我尝试添加JUnit
在classpath库虽然我使用maven,和JUnit库在POM依赖。
我已经尝试了清洁项目,并使用JUnit的Eclipse插件,仍然得到同样的错误创造了一个新的JUnit测试案例。
Answer 1:
这似乎是因为当你只使用源代码编译发生mvn clean compile
(我使用maven 3.1.0,所以我不知道,如果它总是表现得这样)。
如果你运行mvn test
,测试代码可以编译为好,但随后运行测试(如果你想通过Eclipse来运行它们可能不会立即可取的)。解决这个问题的方法是添加test-compile
到当你做了你的Maven命令序列mvn clean
。 例如,你可以运行mvn clean compile test-compile
。
Answer 2:
我也有类似的问题,我的测试,并在网络的某处发现,你必须去打造你的项目的属性路径和移动Maven依赖上述JRE系统库 。 这似乎为我工作。
Answer 3:
我面临着同样的问题,我可以使用@ slomek的解决它的答案 ,但在此之后,问题再次出现。
我终于加入我的项目的输出文件夹JUnit测试的运行配置固定它。 步骤如下:
- 从寻找项目的输出文件夹
Project properties -> Java Build Path -> Default output folder
- 转到
Run -> Run Configurations...
- 单击的单元测试的运行配置,然后单击上
Classpath
选项卡 - 明确添加项目的输出文件夹下的
User Entries
-即使项目已经包含有 - 点击
Advanced -> Add folder
添加输出文件夹
这个问题可能是由于在Eclipse怪异的项目设置 - 例如,源文件夹导入为单个项目/文件夹中嵌套Maven项目(至少这是我的项目是如何设置)。
Answer 4:
如果在Eclipse中只发生,执行命令项目这个问题 - >清理...所选的项目可能会有帮助。
Answer 5:
没有改善这里有什么都试过之后,我解决我的问题仅通过。重新启动Eclipse
Answer 6:
在我来说,我有一个错误的Maven目录结构。
这应该是这样的:
/ SRC /测试/ JAVA / com.myproject.server.MyTest
我固定在那之后 - 一切工作就像一个魅力。
Answer 7:
在我的情况下,只有接下来的步骤帮助我解决这个问题:
- 项目 - >属性 - >运行/调试设置。
- 在“启动配置为‘......’”选择类别/项目
- 编辑 - >类路径 - >“还原默认项”
Answer 8:
此前,在这种情况下,我总是做MVN eclipse:eclipse
和重新启动我的Eclipse和它的工作。 迁移到GIT后,它停止工作对我来说这是有点怪异。
这里的基本问题是Eclipse的先生没有找到编译的类。 然后,我设置输出文件夹作为项目/目标/测试类是由生成的默认mvn clean install
不跳过测试,并与下面的解决方法进行:
选项1:每个测试案例设置CLASSPATH
日食 - >运行 - >运行配置 - >下JUnit->选择mytest的 - >下的classpath标签 - >选择用户Entries->高级 - >添加文件夹 - >选择 - >适用 - >运行
选项2:创建CLASSPATH变量并将其包含在类路径中所有的测试用例
日食 - >窗口 - >类路径变量 - >新建 - > [产品名称:Junit_test_cases_cp | 路径:] - > OK,然后去Eclipse的>运行 - >运行配置 - > JUnit->选择mytest的 - > Classpath选项卡下 - >选择用户Entries- - >高级 - >添加类路径变量 - >选择Junit_test_cases_cp->确定 - >适用 - >运行
这是目前的工作对我来说网上尝试所有建议后的唯一的事。
Answer 9:
我有同样的问题与测试SourceSet有两个资源目录一个摇篮项目。
这个片段来自于主module.gradle并增加了一个资源目录的测试SourceSet:
sourceSets {
test {
resources {
srcDir('../other-module/src/test/resources')
}
}
}
这样做我不得不与项目有关的主要模块的测试SourceSet两个资源目录:
../other-module/src/test/resources的src /测试/资源(相对于主模块的文件夹,由java插件自动添加)
我发现,如果我有两个文件在源目录中相同名称的东西在这个过程中资源的阶段出了问题。 作为结果,没有编译开始,因为这个原因没有分别的.class在bin目录,其中的JUnit一直在寻找类复制。 该ClassNotFoundException的消失只是重命名这两个文件中的一个。
Answer 10:
我有类似的问题与调试Junits我的Eclipse太阳神。 我的问题是有点不同,因为我是能够成功运行Junits但是当我渐渐ClassNotFoundException的调试时相同JUNITs。
我已经尝试了所有种类的Stackoverflow.com提供不同的解决方案和论坛的其他地方,但没有什么似乎工作。 敲我的头,这些问题对于靠近两天后,我终于想出解决的办法。
如果没有解决方案似乎工作,只是删除您的工作空间中创建的文件夹.metadata。 这将创建导入你已经完成了项目和各种配置的额外开销,但这些肯定会解决这些问题。
希望这些帮助。
Answer 11:
这些步骤为我工作。
- 删除本地仓库的内容。
- 运行在命令行MVN干净安装 。 (cd到POM目录)。
- 建设项目在Eclipse中。
Answer 12:
1- MVN蚀:蚀
2-项目清理所有项目
3-重启
Answer 13:
值得一提的是另一种答案,如果你使用的例如:It,和你的classpath得到,因为更新的,比如像三叶草的测试覆盖工具,有时有一个清理打嗝不完全删除的内容/path/to/git/repository/<project name>/bin/
从本质上讲,我使用Eclipse的错误日志查看,确定该清理工作期间,是什么原因导致的问题,导航到源目录,并手动删除<project name>/bin
目录。 一旦完成我回到Eclipse和刷新( F5
),我的项目和错误走了。
Answer 14:
检查你的项目被打开,一个Maven项目,而不是只是一个普通的Java项目。 其实一个没有脑子,但那是完全一样的原因,你可能会错过它。
Answer 15:
它也可能是由于“[错误]没有编译器在这种环境下提供的。也许你在一个JRE,而不是JDK运行?”
Answer 16:
NoClassDefFoundError的真正意味着它不能用来初始化类。 它无关发现的类。 调用TRIM()上的一个空字符串,当我得到这个错误。
JUnit会不显示NullPointerException异常。 正常运行,因为我取出由一个属性文件,该文件是不是针对菱测试的字符串时,该字符串不为空。
我的建议是,直到你的测试开始传递到从类中删除片段。 然后你就可以决定哪条线给错误。
更多资讯: https://stackoverflow.com/a/6352584/1308453https://stackoverflow.com/a/6352584/1308453
Answer 17:
我曾面临同样的问题。 我解决了通过删除我通过增加从下载互联网外部的外部junit的JAR依赖。 但后来我去项目 - >属性 - >构建路径 - >添加库 - > junit->选用的版本(前junit4) - >适用。
它会自动添加的依赖。 它解决了我的问题。
Answer 18:
可能是你忘了放在/ src目录/测试/ java的主类和测试用例类 。 检查一次。
文章来源: Class Not Found Exception when running JUnit test