【问题标题】:ClassNotFoundException when running a junit test in eclipse在eclipse中运行junit测试时出现ClassNotFoundException
【发布时间】:2015-08-07 05:32:54
【问题描述】:

我真的很绝望,为什么甚至会发生这种异常?我正在课堂上进行测试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)

PS:我忘了补充说它一直在工作。但是今天我只是打开了eclipse,我不能在这里运行测试。使用 maven 仍然可以正常工作

【问题讨论】:

    标签: java eclipse maven junit classnotfoundexception


    【解决方案1】:

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

    mvn clean install eclipse:clean eclipse:eclipse
    

    然后将现有项目重新导入 Eclipse 工作区。在此过程之后应该可以正常工作。

    编辑

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

    【讨论】:

    • hm thx 这应该可以工作,但我无法真正理解这个错误是如何发生的以及我应该如何避免它。我的项目非常庞大,导入所有必要的项目需要花费一些时间
    • 您也可以在 Eclipse 中执行此操作。我将发布一个单独的答案。
    • thx,我用上面的命令,然后去project>build all,就可以了!
    【解决方案2】:

    我在同时使用 Eclipse 和 mvn-on-the-command-line 处理项目时遇到了这个问题。

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

    我首先通过命令行运行mvn test 解决了基于Eclipse 的ClassNotFoundException。从此,Eclipse 又找到了测试类。

    【讨论】:

      【解决方案3】:

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

      .project .classpath .设置

      然后使用“Import -> Existing Maven Projects”重新导入项目。

      这应该与彼得的回答具有相同的效果,除了不需要转到命令行。

      【讨论】:

        【解决方案4】:

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

        检查您的 Project/bin 文件夹,是否有您的 .class。如果不是,则项目没有正确构建。

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

        【讨论】:

          【解决方案5】:

          这是 junit 测试从 maven 成功运行但不能从 eclipse junit 测试运行器运行的常见问题。

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

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

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

          这声称在 2017 年“光子”中被修复为 eclipse 错误:

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

          但 2018/2019 年仍有数十篇帖子仍在发生。

          上面的修复是一种变通方法——它不是 eclipse 用户应该知道的标准配置设置。

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

          • 删除 .project/.classpath/.settings 等元文件
          • 创建新的 Eclipse 工作区
          • 运行 mvn eclipse 目标目标
          • 运行组合:多个 project-clean、多个 mvn clean、两次重新打开 eclipse

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

              • 与 maven 测试仍在工作。就在日食有问题
              猜你喜欢
              • 1970-01-01
              • 2013-10-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-03-26
              相关资源
              最近更新 更多