在eclipse中运行junit测试时出现ClassNotFoundException

时间:2015-05-25 17:35:35

标签: java eclipse maven junit classnotfoundexception

我真的很绝望为什么会发生这种异常?我在班级MyTestIT中进行测试。什么课没有找到?我跑的班级......我试图在日食中再次清理并建造它,但没有成功

 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)
PS:我忘记添加它是全职工作。但今天我只是打开eclipse,我不能在这里进行测试。随着maven,它仍在工作

7 个答案:

答案 0 :(得分:4)

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

mvn clean install eclipse:clean eclipse:eclipse

然后将现有项目重新导入到Eclipse工作区。这个程序后应该可以正常工作。

修改

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

答案 1 :(得分:1)

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

的.project 的.classpath .settings

然后使用"导入 - >重新导入项目现有的Maven项目"。

这应该与Peter的答案具有相同的效果,除了不需要去命令行。

答案 2 :(得分:0)

你能把MyTestIt课程放在这里吗?如果没有,请尝试查看您的代码是否存在其中一个问题。

https://docs.oracle.com/javase/7/docs/api/java/lang/ClassNotFoundException.html

答案 3 :(得分:0)

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

命令行启动的mvn clean删除了{J} JUnit支持所依赖的./target/目录,以查找已编译的JUnit测试类。

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

答案 4 :(得分:0)

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

检查您的Project / bin文件夹是否具有.class。如果没有,那么该项目将无法正确构建。

进行清理构建。确保具有junit类的项目没有构建错误。

答案 5 :(得分:0)

这是一个常见问题,即junit测试可以从maven成功运行,而不能从Eclipse junit测试运行器运行。

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

  • 单击:项目-属性-Java构建路径-库-添加外部JAR:
  • 在计算机上本地选择一个相对较新的junit jar版本
  • 单击“订单和导出”标签-将junit jar移到顶部。 (应用并关闭)

现在,您应该能够右键单击测试并成功运行为junit test。

据称此问题已在2017年“光子”中被修复为月食错误:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=525844

junit error

然而,在2018/2019年仍有数十篇文章还在发生。

上面的修复是一种变通办法,即hack Eclipse用户不是应该知道的标准配置设置。

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

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

答案 6 :(得分:0)

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