Eclipse中的JUNIT测试类-java.lang.ClassNotFoundException

Eclipse中的JUNIT测试类-java.lang.ClassNotFoundException,java,eclipse,junit4,classnotfoundexception,Java,Eclipse,Junit4,Classnotfoundexception,我正在尝试运行junit测试(以验证属性文件是否正确加载),但是 我得到ClassNotFoundException,尽管类在那里,所有必需的库也在那里 这是我得到的错误: Class not found ConfigurationManagerTest java.lang.ClassNotFoundException: ConfigurationManagerTest at java.net

我正在尝试运行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)
有没有办法解决这个问题


谢谢。

您确定您的测试类位于生成文件夹中吗?您正在一个单独的JVM(fork=true)中调用junit,所以在调用过程中工作文件夹可能会发生变化,并且构建是相对的,这可能会导致问题


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

ConfigurationManagerTest
未在类路径上找到。确保类路径上有
ConfigurationManagerTest.class
文件

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

假设您已将测试类放在单独的文件夹中,请确保它显示在“PackageExplorer”视图(而不是“Navigator”视图)中


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

另一个可能的问题是缺少生成器(这将阻止生成.class文件)

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

<buildSpec>
  <buildCommand>
    <name>org.eclipse.jdt.core.javabuilder</name>
    <arguments>
    </arguments>
  </buildCommand>
</buildSpec>
<natures>
  <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

org.eclipse.jdt.core.javabuilder
org.eclipse.jdt.core.javanature

当我将测试类拖放到不同的包时,这种情况发生在我身上。我只是做了下面的事情

  • 将类保存在文本编辑器中
  • 从eclipse项目资源管理器中删除了有问题的类
  • 重新创建类

  • 宾果!我现在可以运行测试了

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

    <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>
    
    
    org.eclipse.jdt.core.javabuilder
    org.eclipse.ui.externaltools.ExternalToolBuilder
    启动配置句柄
    project/.externalToolBuilders/myprojectantlaunch.launch
    

    如果Ant构建和Eclipse构建具有不同的输出位置,Eclipse可能无法在类路径上定位测试类。对于Ant builder,还要检查配置的目标,包括clean、auto、manual和after clean builds,以确保生成单元测试的目标被调用。

    我将此答案添加为上面的解决方案回顾

  • 只需在主项目文件夹中编辑文件
    .project
    。使用适当的XML编辑器,否则您将从Eclipse中获得一个
    致命错误
    ,表明您无法打开此项目
  • 通过将这个
    org.eclipse.jdt.core.javanature
    添加到
    中,我创建了我的项目nature
    Java
  • 然后,我将正确缩进的
    org.eclipse.jdt.core.javabuilder
    行添加到
  • 作为JUnit运行
    成功

  • 我有这个问题,要意识到问题出在哪里有点棘手。该项目有一个依赖项项目,但出现了一些错误,导致生成停止执行。当我删除这个依赖性问题时,项目按预期构建


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

    还有一种可能性。我刚才也遇到了同样的问题,这里没有一个解决办法。除了删除和重新创建项目-我不想尝试它。有帮助的是,一次又一次地把项目清理了两次!Clean+build可以重复任意次数-这没有帮助。只有清洁+清洁,然后构建就可以了。(Eclipse 3.6)。当然,您应该为此禁用autobuild


    编辑:这篇文章的最后一个加号是2017年11月15日。因此,问题(和解决方案)仍然是实际的。

    我尝试了这里描述的所有答案,但都不起作用,但发现slomek以非常简单的方式解决了问题。只需转到项目->属性-->java构建路径。然后点击右上下移动Junit到顶部。然后所有的东西都编译得很好。

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

  • 更改测试的输出文件夹
  • 为将从Maven运行测试编译的项目创建自定义生成器
  • 将Maven依赖项在项目构建路径的Order和Export列表中上移
  • 还有很多很多,但我发现其中一个可行的方法是:关闭开发环境。从本地Maven存储库中删除项目使用的JAR。打开IDE。构建项目。运行测试


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

    检查属性->java构建路径->库。应该没有错误,在我的例子中,maven中有错误。一旦我将所需的jar放入maven repo中,它就工作得很好了

    在浏览器中右键单击项目:构建路径->订单和导出->选择JRE系统库[jdk],然后单击底部按钮。

    对我有效的是删除测试的运行配置。然后右键单击testclass并单击RunasJUnitTest

    现在它重新创建了一个正确的r
    mvn clean compile