58

我正在尝试运行我的 junit 测试(以验证属性文件是否正确加载),但我得到ClassNotFoundException了虽然该类在那里并且所有必需的库也在那里。

这是我得到的错误:

Class not found ConfigurationManagerTest                                                 java.lang.ClassNotFoundException: ConfigurationManagerTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    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)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

有想法该怎么解决这个吗 ?

谢谢。

4

26 回答 26

41

ConfigurationManagerTest在您的类路径中找不到。确保该ConfigurationManagerTest.class文件在您的类路径中可用。

如果它没有成功编译,或者它是在您没有告诉 Eclipse 项目应该在类路径上的目录中创建的,它可能不存在。

假设您已将测试类放在单独的文件夹中,请确保它显示在“包资源管理器”视图(而不是“导航器”视图)中。

在项目属性“Java Build Path”和“Source”选项卡下,您还可以查看是否包含用于构建的源文件夹以及生成 .class 文件的位置。

于 2011-04-19T15:05:27.940 回答
24

还有一种可能。我刚才遇到了同样的问题,这里的解决方案都没有帮助。除了删除和重新创建项目 - 我不想尝试它。有什么帮助,是一个接一个地立即清理项目两次!Clean + build 可以重复任意次数 - 这无济于事。只有干净+干净,然后构建就可以了。(日食 3.6)。当然,您应该为此禁用自动构建。

编辑:这篇文章在 2017 年 11 月 15 日得到了最后的加分。因此,问题(和解决方案)仍然存在。

于 2013-03-14T11:50:49.543 回答
4

另一个可能的问题是缺少构建器(它将阻止构建您的 .class 文件)。

检查您的 .project 文件是否包含以下几行

<buildSpec>
  <buildCommand>
    <name>org.eclipse.jdt.core.javabuilder</name>
    <arguments>
    </arguments>
  </buildCommand>
</buildSpec>
<natures>
  <nature>org.eclipse.jdt.core.javanature</nature>
</natures>
于 2012-04-12T18:55:19.200 回答
3

当我将测试类拖放到不同的包时,这发生在我身上。我刚刚做了以下

  1. 将课程保存在文本编辑器中。
  2. 从 Eclipse 项目资源管理器中删除了有问题的类。
  3. 重新创建了类。

答对了!我现在可以运行测试了!

于 2012-04-17T14:11:46.390 回答
2

我遇到了这个问题,意识到出了什么问题有点棘手。该项目有一个有一些错误的依赖项目,导致构建无法执行。当我删除这个依赖问题时,项目按预期构建。

Ps.:我正在做一个编译错误很多的项目,因为我们正在移植一个从Delphi转换为Java的应用程序,所以一开始我并没有在意编译错误,这就是为什么我花了一些时间找出问题所在。

于 2013-02-17T17:09:32.740 回答
2

我尝试了此处描述的所有答案,但都没有奏效,但找到了 slomek 以非常简单的方式解决问题的线程。只需转到项目-> 属性-> java 构建路径。然后将 Junit 移动到顶部,方法是点击右上方的底部。然后一切都编译得很好。

于 2013-04-12T13:34:39.930 回答
2

检查属性-> java 构建路径-> 库。应该没有错误,在我的情况下,maven中有错误。一旦我将所需的 jar 放入 maven repo 中,它就可以正常工作

于 2013-05-29T04:31:01.300 回答
1

我尝试了这里和其他帖子中提到的所有内容。人们提供的一些解决方案是:

  1. 更改测试的输出文件夹
  2. 为将从 Maven 运行 test-compile 的项目创建自定义构建器
  3. 在项目构建路径的 Order and Export 列表中将 Maven 依赖项移到更高的位置

还有很多很多,但我发现可以工作的一个如下:关闭开发环境。从我的本地 Maven 存储库中删除项目使用的 jar。打开 IDE。构建项目。运行测试。

经过数小时的敲击我的键盘并遵循建议的解决方案后,这个成功了!

于 2013-05-17T14:59:59.713 回答
1

对我有用的是删除测试的运行配置。然后右键单击 testclass 并单击 run as junit test。

现在它为我重新创建了正确的运行配置。

于 2013-12-25T16:04:09.407 回答
1

这可以展开的另一种方式,并且只是为我做了,如果你有一个 Eclipse 没有告诉你的构建错误。如果编译单元测试失败,则没有 .class 文件,您将收到 ClassNotFoundException。

就我而言,缺少第 3 方 jar 文件。当我运行测试时,我得到一个弹出窗口,上面写着“所需项目中存在错误”。我与一个巨大的项目一起工作,我总是得到那个信息,因为有些源代码对 Eclipse 不可用(长篇大论)。它也没有说明错误是什么。所以我点击“继续”,然后我得到了异常。

一旦我意识到发生了什么,很容易通过将丢失的 jar 添加到运行 - > 调试配置下的类路径...

我不确定如何最好地检测或防止这种情况发生,除非在出现问题时意识到这种可能性并查看您最近的更改以了解可能出现的问题。

于 2015-09-16T18:59:57.767 回答
0

您确定您的测试类在构建文件夹中吗?您在单独的 JVM (fork=true) 中调用 junit,因此工作文件夹可能会在该调用期间发生更改并且构建是相对的,这可能会导致问题。

使用 -verbose 或 -debug 开关从命令行(不是从 Eclipse)运行 ant 以查看详细的类路径/正在调用的工作目录 junit,如果您仍然无法解决此问题,则将结果发布回此处。

于 2011-04-19T12:33:27.110 回答
0

上面盖伊的答案的变体,涉及额外的建设者。假设您配置了一个 Ant 构建器:

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
        <arguments>
            <dictionary>
                <key>LaunchConfigHandle</key>
                <value>&lt;project&gt;/.externalToolBuilders/myprojectantlaunch.launch</value>
            </dictionary>
        </arguments>
    </buildCommand>
</buildSpec>

如果 Ant 构建和 Eclipse 构建具有不同的输出位置,Eclipse 可能无法在类路径上找到测试类。在 Ant 构建器的情况下,还要检查配置的目标以进行清理、自动、手动和清理后构建,以确保调用构建单元测试的目标。

于 2012-11-09T00:13:24.840 回答
0

我将此答案添加为上面的解决方案评论。

  1. 您只需编辑.project主项目文件夹中的文件。使用适当的 XML 编辑器,否则您会fatal error从 Eclipse 获得一个统计信息,表明您无法打开该项目。
  2. Java通过将其添加<nature>org.eclipse.jdt.core.javanature</nature><natures></natures>.
  3. 然后我添加了正确缩进的那些<buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand><buildSpec></buildSpec>
  4. Run as JUnit...成功
于 2012-12-14T16:28:19.683 回答
0

右键单击资源管理器中的项目:构建路径 -> 订购和导出 -> 选择 JRE 系统库 [jdk] 并单击底部按钮。

于 2013-11-08T14:34:29.207 回答
0

又一个变种。
不知何故,我以前工作的测试课程似乎是从其他地方运行的;当我运行测试时,我的编辑不会执行。

我发现我的 ${project_loc}src/test/java 文件的输出文件夹不是我所期望的。它无意中被设置为 ${project_loc}target/classes。我在项目属性、Java 构建路径、源选项卡中正确设置了它。

于 2014-05-02T02:37:18.503 回答
0

如果您有一个 Maven 项目,请尝试运行:

mvn clean compile

然后在 Eclipse 中清理并构建您的项目。

于 2014-06-18T00:43:22.557 回答
0

我在调试 Junits 的 Eclipse Helios 上遇到了类似的问题。我的问题略有不同,因为我能够成功运行 Junits,但是当我在调试相同的 JUNIT 时遇到 ClassNotFoundException 时。

我已经尝试过 Stackoverflow.com 和其他地方的论坛中提供的各种不同的解决方案,但似乎没有任何效果。在用这些问题敲了近两天之后,我终于找到了解决方案。

如果这些解决方案似乎都不起作用,只需删除在您的工作区中创建的 .metadata 文件夹。这会增加导入项目和您所做的各种配置的额外开销,但这些肯定会解决这些问题。

希望这些有所帮助。

于 2014-07-31T07:17:43.100 回答
0

在“Package Explorer”视图中,右键单击您的测试类,然后“Build Path”>>“Include”,应该可以了。

于 2015-03-26T02:43:44.900 回答
0

我也面临同样的例外,互联网上的解决方案都没有帮助我。我的项目包含多个模块。我的 Junit 代码位于 Web 模块中。它指的是客户端模块的代码。

最后,我尝试了:右键单击(Web模块)项目->构建路径->源选项卡->链接源->添加src文件位置(客户端模块的)

就是这样!它就像一个魅力希望它有帮助

于 2015-05-08T12:37:36.843 回答
0

我收到此错误是因为我最近创建了一个新工作区并且我的“已安装的 JRE”没有正确设置。确保在Preferences -> Java -> Installed JREs 您的 JDK 的根文件夹中被选中。出于某种原因,我在新工作区中的默认设置是 JRE。

于 2015-10-29T19:52:07.863 回答
0

我知道很久以前就已经回答了这个问题,但是答案并没有为我解决,但是我只是从 buildpath 设置中的源代码中删除了所有内容并重新添加了它们

于 2016-04-28T18:39:48.950 回答
0

我遇到了这个问题,在我的情况下,问题在于编译,我使用的是 maven 并且测试类没有编译。

我通过执行 maven 安装(它编译所有文件)来修复它,您也可以检查其他原因,以避免测试编译,就像您的“运行配置”跳过测试以节省时间一样。

于 2018-09-19T09:06:33.073 回答
0
  • 假设您尝试了所有合理的操作(删除目标、刷新、清理、重建、maven 安装...)并且您意识到 Eclipse 的行为不合理...
  • 现在:检查是否没有错误提示它可以是与测试有关的插件(任何插件)。

  • 就我而言:

    • 我删除了 EclEmma。
    • 它开始工作...

花了几个小时试图猜测它!

于 2019-03-04T16:51:27.613 回答
0

请确保Java Build Path选项卡中的输出文件夹设置如下,这将确定 .class 文件的生成位置。然后清理项目。

在此处输入图像描述

于 2019-05-01T03:43:48.103 回答
0

上述解决方案对我不起作用。

我刚刚通过关闭它并重新打开它来重新启动我的 IDE。

然后错误消失了,现在工作正常。

于 2020-02-03T10:29:18.583 回答
0

您可能需要结合使用上述方法来解决此问题。当我这样做时,我通常会收到此错误

mvn clean install

并看到一个编译错误,阻止我的测试完全编译。

假设上述解决的问题已经解决,请尝试单击项目、清理,然后清理包含您要运行的测试的项目。还要确保选中自动构建。

于 2020-10-02T11:13:47.760 回答