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

59

我试图运行我的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)

有没有关于如何修复这个问题的想法?

谢谢。


18
尝试清理并构建您的项目。 - Harry Joy
1
尝试了很多次,我一直得到相同的错误。 - Mouna Cheikhna
3
在Eclipse中打开运行配置窗口,选择你运行的单元测试,进入“classpath”选项卡:在这里你可以检查实际的类路径。 - Stijn Geukens
谢谢,我在classpath选项卡中看到了一个错误:[JRE]:JRE与工作区不兼容。类文件兼容性:1.6,也许这是原因? - Mouna Cheikhna
刷新您的项目,然后执行清理和构建。 - riteshkasat
显示剩余2条评论
27个回答

41

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

如果未成功编译或正在创建该文件的目录未被告知 Eclipse 项目应该在类路径上的情况下,它可能不存在。

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

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


8
在缺失类文件方面再添加一些内容: 检查 <我的项目>\build\classes\ 目录下是否有类文件。 如果没有,请检查 Eclipse 的问题窗格,查看有关构建测试项目的错误。解决这些错误后,它将会被构建。 如果所有其他方法都失败了,你可能需要运用到 Project->clean,然后重新构建。如果你非常绝望,可以尝试重新启动 Eclipse(但成功率不高)。 - Gili Nachum
1
我注意到在我的Eclipse项目设置中,所有的构建类都没有进入默认项目构建目录,因此我的测试甚至无法访问构建产物。 - bakoyaro
1
是的,我的Maven项目正在/bin目录下构建.class文件。我必须通过高级/添加文件夹选项,在runconfig/classpath选项卡下将该目录添加到用户条目中。 - theRiley
这对我来说非常有效!我的工作区中有许多(未来)项目存在编译问题。将测试类添加到类路径中运行了我所需的测试。 - Nash N

25

还有一种可能性。我刚刚遇到了相同的问题,这里的解决方案都没有帮助。除了移除和重新创建项目 - 我不想尝试。有用的是连续两次清理项目!可以重复清理+构建任意次数- 这不会有帮助。只有清理+清理,然后构建才能正常进行(Eclipse 3.6)。当然,在此之前,您应该禁用自动构建。

编辑:此帖子在2017年11月15日获得了最后一个加号。因此,问题(和解决方案)仍然存在。


谢谢,那很有帮助,但我不得不禁用自动构建。此外,我还必须解决其他与jUnit无关的缺失库。 - Hohenheimsenberg
完全没有帮助(Eclipse 4.5) - Christian Vielma
1
@ChristianVielma 希望如此。在经历了9个版本的演进后,他们应该修复了这个bug! - Gangnus
1
两倍!这就是Eclipse。 - alexpfx
1
@Alessandro,神奇的是他们已经有了同样的错误4年了。我正在通过计算点赞数来测量错误的寿命 :-) - Gangnus
显示剩余9条评论

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>

这是我的问题 - 忘记了我的项目启用了AspectJ,因此具有AJDT构建器,而我没有安装它。令人恼火的是,Eclipse在这些情况下会悄悄地拒绝构建项目。 - Nick
这解决了我的问题。谢谢老兄.. :) - Prasobh.Kollattu

3
当我将测试类拖放到不同的包中时,出现了这种情况。我只需要按照以下步骤操作:
  1. 在文本编辑器中保存该类。
  2. 从Eclipse项目资源管理器中删除该类。
  3. 重新创建该类。
完成!现在我可以运行测试了!

太好了!我的所有测试都无法编译(没有.class文件)。我只使用您的方法删除并重新创建了一个类,突然所有测试类都可以再次编译。 - ROLO
在我的情况下没有任何帮助(Eclipse 4.5) - Christian Vielma

2

我曾经遇到过这个问题,很难意识到哪里出了错。项目有一个依赖项目出现了一些错误,导致构建停止执行。当我移除这个依赖问题后,项目就按预期构建了。

附:我正在处理一个编译错误很多的项目,因为我们正在将一个从Delphi转换成Java的应用程序进行移植,所以一开始并没有在意编译错误,这就是为什么花费了我一些时间找到问题的原因。


2

检查属性->Java构建路径->库。不应该有错误,我的情况下Maven中有错误。一旦我将所需的jar放入Maven仓库中,它就能正常工作。


2

我尝试了这里描述的所有答案,但都没有起作用。但是我在这个帖子中找到了slomek以非常简单的方式解决问题。只需转到项目->属性-->java构建路径。然后通过向右侧的上按钮移动Junit到顶部。然后一切都可以正常编译。


1
I also faced similar issue as mention in comment below.
    
    **org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:766)**
    
Check all mention possibility above but still could not find root cause why test case not getting execute.
Then I found that there is one package issue in my class. So due to that I was getting compilation error in my Test class. 
Reason is quite simple, Due to compilation error class did not compile and could not create class file. 
I fixed that compilation error and executed that Test class and its run successfully.

1
我尝试了这里和其他帖子中提到的所有方法。人们提出的一些解决方案包括:
  1. 更改测试的输出文件夹
  2. 为项目创建一个自定义构建器,该构建器将从Maven运行test-compile
  3. 将Maven依赖项在项目构建路径的排序和导出列表中移动得更高
有很多,很多更多,但我发现有效的是:关闭开发环境。从我的本地Maven存储库中删除项目使用的jars。打开IDE。构建项目。运行测试。
经过几个小时的头痛和按照建议的解决方案,这个解决方案起作用了!

1
我做的是移除测试的运行配置,然后右键点击测试类并选择作为Junit测试运行。现在会为我重新创建正确的运行配置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接