Java 在eclipse中运行junit测试时发生ClassNotFoundException

Java 在eclipse中运行junit测试时发生ClassNotFoundException,java,eclipse,maven,junit,classnotfoundexception,Java,Eclipse,Maven,Junit,Classnotfoundexception,我真的很绝望,为什么会发生这种异常?我正在类MyTestIT中运行测试。找不到什么类?我经营的班级。。。我试图在eclipse中清理并重新构建它,但没有成功 Class not found it.mytest.MyTestIT java.lang.ClassNotFoundException: it.mytest.MyTestIT at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at j

我真的很绝望,为什么会发生这种异常?我正在类
MyTestIT
中运行测试。找不到什么类?我经营的班级。。。我试图在eclipse中清理并重新构建它,但没有成功

 Class not found it.mytest.MyTestIT
    java.lang.ClassNotFoundException: it.mytest.MyTestIT
        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:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:685)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:421)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

我忘了加上它一直在工作。但今天我只打开eclipse,不能在这里运行测试。maven仍在运行

你能把MyTestIt类放在这里吗?如果没有,请尝试查看您的代码是否存在此类问题


看起来像是某种奇怪的eclipse问题,这对我们来说很难诊断,但暴力方法是这样的: 如果项目中有maven,只需从eclipse工作区中删除项目(不要删除文件),然后从命令行执行以下操作:

mvn clean install eclipse:clean eclipse:eclipse
然后将现有项目重新导入到eclipse工作区中。完成此步骤后,应该可以正常工作

编辑


启动测试并切换到调试透视图。您将在“调试”视图中看到最近的启动。选择它并转到其属性(快捷方式:Alt+Enter)。在“命令行”部分,您应该看到Eclipse用于启动单元测试的确切命令是什么。检查类路径是否正常。这可能只是一些奇怪的eclipse项目设置。Maven将使用不同的类路径来运行您的测试,可能是Eclipse在错误的目录中查找您的单元测试。如果您的类在classspath中,那么它必须工作。

我在命令行上同时使用Eclipse和
mvn执行项目时遇到了这个问题

命令行启动的
mvnclean
删除了
/target/
目录,Eclipse的JUnit支持也依赖该目录来查找编译后的JUnit测试类


通过首先从命令行运行
mvn测试
,我解决了基于Eclipse的
ClassNotFoundException
。从那时起,Eclipse再次找到了测试类。

从Eclipse项目中删除以下文件/文件夹:

.项目 .classpath .设置

然后使用“导入->现有Maven项目”重新导入项目


这应该与Peter的回答具有相同的效果,只是不需要转到命令行。

检查项目是否正确构建。您可以在“问题”选项卡(Windows-->显示视图-->问题)中进行检查。如果您看到“由于某些错误,项目无法生成”。然后首先尝试解决错误

检查你的项目/bin文件夹,它是否有你的.class。如果没有,那么项目没有正确构建


干净利落。确保具有junit类的项目没有生成错误。

这是一个常见的问题,junit测试从maven成功运行,而不是从eclipse junit测试运行程序成功运行

一种解决方案是手动将相对较新的junit jar的外部本地副本添加到eclipse类路径的顶部 在项目属性生成路径或单元测试运行时配置中。例:

  • 单击:项目-属性-Java构建路径-库-添加外部JAR:
  • 在您的计算机上本地选择相对较新的junit jar版本
  • 单击“订单和导出”选项卡-将junit jar移到顶部。(应用并关闭)
您现在应该能够右键单击测试并作为junit测试成功运行

这被称为2017年“光子”的eclipse bug:

然而,在2018/2019年,仍有数十个帖子在发布

上面的修复是一个解决方法-它不是eclipse用户应该知道的标准配置设置

其他一些变通方法对我不起作用:

  • 删除元文件,如.project/.classpath/.settings
  • 创建新的eclipse工作区
  • 运行mvn eclipse目标
  • 运行以下组合:多个项目清理、多个mvn清理、两次重新打开eclipse

如果此问题仅在Eclipse中发生,请执行命令Project->Clean。。。对所选项目可能有所帮助。

maven测试仍在运行。只是在eclipse中有一个问题HM thx应该可以工作,但我不能真正理解这个错误是如何发生的,我应该如何避免它。我的项目非常庞大,导入所有必要的项目需要花费一些时间,您也可以在Eclipse中完成这项工作。我将发布一个单独的答案。