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

|| 我正在尝试运行junit测试(以验证属性文件是否正确加载),但是 尽管有类并且所有必需的库也在那里,但我还是得到了“ 0”。 这是我得到的错误:
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)
有想法该怎么解决这个吗 ? 谢谢。
已邀请:
在您的类路径中找不到
ConfigurationManagerTest
。确保
ConfigurationManagerTest.class
文件在您的类路径中可用。 如果未成功编译它,或者在您没有告诉Eclipse项目应该在类路径中的目录中创建它,则它可能不存在。 假设您已将测试类放在单独的文件夹中,请确保它显示在\“ Package Explorer \”视图(而不是\“ Navigator \”视图)中。 在项目属性\“ Java Build Path \”和\“ Source \”选项卡下,您还可以查看是否包含用于构建的源文件夹以及.class文件的生成位置。
还有另一种可能性。我刚才遇到了同样的问题,这里的解决方案都没有帮助。除了删除和重新创建项目-我不想尝试。有所帮助的是,一次又一次地将项目清洗了两次! Clean + build可以重复任意次数-这无济于事。只有clean + clean,之后构建就可以了。 (Eclipse 3.6)。当然,您应该为此禁用自动构建。 编辑:这篇文章在15.11.2017得到了最后的加分。因此,问题(和解决方案)仍然是实际的。
另一个可能的问题是缺少生成器(它将阻止生成.class文件)。 检查您的.project文件是否包含以下行
<buildSpec>
  <buildCommand>
    <name>org.eclipse.jdt.core.javabuilder</name>
    <arguments>
    </arguments>
  </buildCommand>
</buildSpec>
<natures>
  <nature>org.eclipse.jdt.core.javanature</nature>
</natures>
当我将测试类拖放到不同的包时,这发生在我身上。我只是做了以下 将类保存在文本编辑器中。 从eclipse项目资源管理器中删除了有问题的类。 重新创建课程。 答对了!我现在可以运行测试!
我遇到了这个问题,要弄清楚问题出在哪里有些棘手。该项目有一个有错误的依赖项目,该项目使生成停止执行。当我消除此依存关系问题时,该项目按预期方式构建。 附注:我正在一个有很多编译错误的项目上工作,因为我们正在移植从Delphi转换为Java的应用程序,所以我一开始并不在乎编译错误,这就是为什么花了我一些时间来找出问题所在。
检查属性-> Java构建路径->库。应该没有错误,就我而言,行家中有错误。一旦将所需的jar放入Maven仓库中,它就可以正常工作
我尝试了此处描述的所有答案,但均无济于事,但发现slomek可以非常轻松地解决此问题的线程。只需转到项目->属性-> Java构建路径。然后通过单击右上角的底部将Junit移到顶部。然后一切都编译正常。
我尝试了这里和其他帖子中提到的所有内容。人们提供的一些解决方案是: 更改测试的输出文件夹 为将创建从Maven运行测试编译的项目的自定义生成器 在项目构建路径的“顺序和导出”列表中,将Maven依赖项移至更高位置 还有很多很多,但是我发现可以使用的工作如下:关闭开发环境。从我的本地Maven存储库中删除该项目使用的jar。打开IDE。生成项目。运行测试。 经过数小时不停地敲击我的键盘和遵循建议的解决方案后,该解决方案成功了!
对我有用的是删除测试的运行配置。然后右键单击testclass,然后单击run as junit test。 现在,它为我重新创建了正确的运行配置。
这对我来说可以解决的另一种方法是,如果您遇到了Eclipse无法告知您的构建错误。如果编译单元测试失败,则没有.class文件,您将收到ClassNotFoundException。 在我的情况下,缺少第3方jar文件。运行测试时,出现一个弹出窗口,显示“在所需项目中存在错误”。我从事的是一个庞大的项目,并且总是能收到该消息,因为某些来源无法使人们黯然失色(长话短说)。而且它没有说错误是什么。因此,我单击“继续”,然后出现异常。 一旦我意识到发生了什么,就可以通过在Run-> Debug Configurations下将缺少的jar添加到类路径中来轻松修复。 我不确定如何最好地检测或阻止这种情况的发生,只是要知道出现问题时会发现这种可能性,并查看您最近的更改以查找可能出了问题的地方。
您确定测试类在build文件夹中吗?您要在单独的JVM中调用junit(fork = true),因此工作文件夹可能会在该调用期间更改,并且构建是相对的,这可能会引起问题。 使用-verbose或-debug开关从命令行(而不是从Eclipse)运行ant来查看正在调用的详细类路径/工作目录junit,如果仍然无法解决此问题,则将结果发布回此处。
上面盖伊答案的一种变体,涉及其他建造者。假设您配置了一个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生成器,还请检查配置的目标以进行干净,自动,手动和后清理构建,以确保调用了构建单元测试的目标。
我将以上答案添加为我的解决方案评论。 您只需在主项目文件夹中编辑文件“ 6”。使用适当的XML编辑器,否则将从Eclipse中获得
fatal error
,表明无法打开该项目。 通过将
<nature>org.eclipse.jdt.core.javanature</nature>
添加到ѭ10,使项目的性质变为ѭ8。 然后,将那些正确缩进了
<buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand>
的行添加到
<buildSpec></buildSpec>
Run as JUnit
〜成功
在资源管理器中右键单击项目:“构建路径”->“订购和导出”->“选择JRE系统库[jdk]”,然后单击“底部”按钮。
另一个变化。 不知何故,我以前工作的测试课程似乎是在其他地方运行的。运行测试时,我的编辑将不会执行。 我发现$ {project_loc} src / test / java文件的输出文件夹不是我期望的。它被无意中设置为$ {project_loc} target / classs。 我在项目属性,“ Java构建路径”,“源”选项卡中正确设置了它。
如果您有一个Maven项目,请尝试运行:
mvn clean compile
然后在Eclipse中清理并构建您的项目。
我在调试Junits的Eclipse Helios中遇到了类似的问题。我的问题没有什么不同,因为我能够成功运行Junits,但是当我在调试相同的JUNIT时遇到ClassNotFoundException时。 我尝试了Stackoverflow.com和其他论坛中可用的各种解决方案,但似乎没有任何效果。在花了将近两天时间解决这些问题之后,我终于找到了解决方案。 如果所有解决方案都不起作用,只需删除在工作区中创建的.metadata文件夹。这会增加导入项目和完成的各种配置的额外开销,但是这些肯定会解决这些问题。 希望这些会有所帮助。
在\“ Package Explorer \”视图中,右键单击您的测试类,然后单击\“ Build Path \” >> \“ Include \”,应该可以。
我也面临着同样的例外,互联网上的解决方案都没有帮助我。 我的项目包含多个模块。我的Junit代码位于Web模块中。它指的是客户端模块的代码。 最后,我尝试了: 右键单击(Web模块)项目->构建路径->源选项卡->链接源->添加了src文件的位置(客户端模块的位置) 而已!它像魅力一样运作 希望能帮助到你
我收到此错误是因为我最近创建了一个新的工作区,并且我的“ Installed JRE”未正确设置。确保在
Preferences -> Java -> Installed JREs
JDK的根文件夹已选中。由于某种原因,在新工作区中对我来说默认值为JRE。
我知道很久以前就已经回答了这个问题,但是答案并没有为我解决,但是,我只是从buildpath设置中的源中删除了所有内容,然后重新添加了它们
我遇到了这个问题,就我而言,问题在于编译,我使用的是maven,而测试类未编译。 我通过执行maven安装(它会编译所有文件)来修复它,也可以出于其他原因进行检查,从而避免测试编译,就像您的“运行配置”跳过测试以节省时间一样。
假设您尝试了所有合理的事情(删除目标,刷新,清理,重建,maven安装...),并且您意识到Eclipse的行为不合理... 现在:检查是否没有错误表明它可以是与测试有关的插件(任何插件)。 就我而言: 我删除了EclEmma。 它开始工作了... 花了几个小时尝试猜测!
请确保按如下所示在ѭ16the选项卡中设置输出文件夹,这将确定生成.class文件的位置。然后清理项目。

要回复问题请先登录注册