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中完成这项工作。我将发布一个单独的答案。