运行JUnit测试时出现“类未找到异常”

143

我在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)

虽然我使用的是Maven,JUnit库已经在POM依赖中,但我尝试将JUnit库添加到类路径中。

我已经尝试清除项目并使用Eclipse的JUnit插件创建了一个新的JUnit测试用例,但仍然收到相同的错误。


13
运行一次 mvn clean test 命令,它将编译所有测试类。 - jmj
1
请问您能否检查一下 com.myproject.server.MyTest 是否在 bin 文件夹中?我的意思是,如果由于编译或构建路径错误而未编译,则会出现此错误。 - vikas
你是在测试一个类还是整个项目? - Doszi89
可能是Eclipse - java.lang.ClassNotFoundException的重复问题。 - Amos M. Carpenter
2
在我的情况下,使用Maven运行测试是有效的,但如果我右键单击测试类并选择“Run As -> JUnit Test”,它会报告ClassNotFoundException。我通过右键单击项目并转到“属性->构建器”,然后将Maven项目构建器移动到Java构建器之上来解决这个问题。 - xorcus
从其他答案(通过清理/重建、重新启动Eclipse、进行一些虚拟更改、删除.metadata文件夹、更改类路径项的顺序、恢复默认值等解决)和我的经验来看,这是Eclipse中某种竞争条件错误,即使在2023年也是如此。在我的情况下,它找不到一个资源文件:java.io.FileNotFoundException: class path resource [foo/appStuff.xml] cannot be opened because it does not exist 然后在摆弄了一番之后,它突然开始工作了。使用与之前相同的设置。 - David Balažic
25个回答

0
请检查您是否已将junit4添加为依赖项。

e.g

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>

-1

检查您的项目是否作为Maven项目打开,而不仅仅是普通的Java项目。实际上这很简单,但也正因为如此,您可能会忽略它。


-1
我曾经遇到过同样的问题。我通过删除我从外部下载添加的外部JUnit jar依赖项来解决它。但是然后我去了项目->属性->构建路径->添加库->junit->选择版本(例如junit4)->应用。
它自动添加了依赖项,这解决了我的问题。

-1
进行一些虚拟更改并保存测试类可以解决问题。它会自动构建 .class 文件。

-6

可能你忘记把主类测试用例类放在/src/test/java中了。检查一下吧。


1
java.lang.ClassNotFoundException是由于类路径未设置正确,在运行时已经编译好的类无法找到而引起的。 - Nitin Mahesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接