Eclipse中的JUNITtesting类 – java.lang.ClassNotFoundException

我试图运行我的junittesting(以validation属性文件加载正确),但我得到了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) 

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

谢谢。

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

它可能不存在,如果它没有成功编译,或者如果它是在一个没有告诉Eclipse项目的目录中创build的,应该在类path中。

假设你已经把你的testing类放在一个单独的文件夹中,确保它显示在“Package Explorer”视图(而不是“Navigator”视图)中。

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

还有一个可能性。 我刚刚有同样的问题,没有一个解决scheme在这里帮助。 除了删除和重build项目 – 我不想尝试。 有什么帮助的,就是一个接一个地清理这个项目两次 ! 清洁+构build可以重复任何次数 – 这将无济于事。 只有清洁+干净,build立之后才行。 (Eclipse 3.6)。 当然,你应该禁用autobuild。

编辑:这个职位在15.11.2017有最后的加分。 所以,问题(和解决scheme)仍然是实际的。

另一个可能的问题是缺less构build器(它会阻止你的.class文件被构build)。

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

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

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

  1. 在文本编辑器中保存课程。
  2. 从eclipse项目浏览器中删除了违规的类。
  3. 重新创build类。

答对了! 我现在可以运行testing!

我遇到了这个问题,弄清楚什么是错的。 该项目有一个错误的依赖项目,从而停止执行构build。 当我消除这个依赖性问题时,该项目按预期build成。

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

检查属性 – > java构buildpath – >库。 应该没有错误,在我的情况下在maven有错误。 一旦我把所需的jar放入maven仓库,它就可以正常工作

你确定你的testing类是在生成文件夹? 你在一个单独的JVM中调用junit(fork = true),所以有可能工作文件夹在调用过程中会发生变化,而构build是相对的,这可能会导致一个问题。

从命令行(不是从Eclipse)运行ant,使用-verbose或-debug开关来查看详细的classpath /工作目录如果你仍然无法解决这个问题,junit正在被调用,并将结果发回到这里。

我试过所有在这里描述的答案没有任何工作,但发现这个线程 slomek以非常简单的方式解决问题。 只要去项目 – >属性 – > Java构buildpath。 然后通过点击右上方的底部将Junit移动到顶端。 然后一切都编译得很好。

我试过这里和其他post中提到的一切。 人们提出的一些解决scheme是:

  1. 更改testing的输出文件夹
  2. 为将从Maven运行testing编译的项目创build一个自定义构build器
  3. 在项目构buildpath的Order和Export列表中移动更高的Maven依赖关系

还有很多,但我发现的工作如下:closures开发环境。 从我的本地Maven仓库中删除项目使用的jar子。 打开IDE。 build立这个项目。 运行testing。

经过几个小时的敲击我的键盘和下面的build议解决scheme,这一个工作!

对我来说,工作是去除testing的运行configuration。 然后右键单击testing类并单击运行作为junittesting。

现在它为我重新创build一个正确的运行configuration。

另一种方式,这可以展开,只是为我做了,如果你有一个Eclipse不会告诉你的构build错误。 如果编译unit testing失败,那么没有.class文件,你将得到ClassNotFoundException。

在我的情况下,有一个失踪的第三方jar文件。 当我运行testing时,popup窗口显示“所需项目中存在错误”。 我与一个巨大的项目工作,我总是得到这个消息,因为一些来源不可用于日食(长故事)。 也没有说错误是什么。 所以我点击“继续”,然后我得到exception。

一旦我意识到发生了什么事情,通过将缺less的jar添加到运行 – >debuggingconfiguration下的类path中很容易解决…

我不知道如何最好地检测或防止这种情况发生,除非在出现问题时意识到这种可能性,并检查最近发生的可能出错的最新更改。

盖伊在上面的答案的变化,涉及额外的build设者。 假设您已经configuration了一个Ant构build器:

 <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构build和Eclipse构build具有不同的输出位置,则Eclipse可能无法在类path上findtesting类。 在Ant构build器的情况下,还要检查configuration的目标是否为clean,auto,manual和after-clean构build,以确保构buildunit testing的目标被调用。

我从上面添加这个答案作为我的解决scheme审查。

  1. 您只需编辑主项目文件夹中的文件.project 。 使用适当的XML编辑器,否则你会从Eclipse得到一个fatal error ,你不能打开这个项目。
  2. 我通过将<nature>org.eclipse.jdt.core.javanature</nature><natures></natures>来使自己的项目变得非常<natures></natures>
  3. 然后,我将这些行正确地缩进<buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand><buildSpec></buildSpec>
  4. Run as JUnit成功

右键单击资源pipe理器中的项目:构buildpath – >顺序和导出 – >selectJRE系统库[jdk],然后单击底部button。

又一个变化。
不知何故,我以前的工作testingclass似乎从其他地方跑, 当我运行testing时,我的编辑将不会执行。

我发现我的$ {project_loc} src / test / java文件的输出文件夹不是我所期望的。 它不经意地被设置为$ {project_loc}目标/类。 我在项目属性Java Build Path,Source选项卡中正确设置了它。

如果你有一个Maven项目尝试运行:

 mvn clean compile 

然后在eclipse中清理并build立你的项目。

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

我已经尝试了各种不同的解决scheme可用在其他地方的Stackoverflow.com和论坛,但似乎没有任何工作。 在这些问题敲了近两天之后,我终于find了解决办法。

如果没有任何解决scheme似乎可行,只需删除工作区中创build的.metadata文件夹即可。 这会造成额外的额外开销,导入项目和你所做的各种configuration,但是这些肯定会解决这些问题。

希望这些帮助。

在“包资源pipe理器”视图中,右键单击您的testing类,然后“构buildpath”>>“包含”,它应该是确定的。

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

最后,我试了一下:右键单击(Web模块)项目 – >构buildpath – >源码选项卡 – >链接源码 – >添加src文件位置(客户端模块)

而已! 它像一个魅力希望它有帮助

我收到这个错误,因为我最近创build了一个新的工作区,我的“已安装的JRE”没有正确设置。 确保在Preferences -> Java -> Installed JREs中select了JDK的根文件夹。 由于某种原因,我在一个新的工作空间中默认是JRE。

我知道这已经很久以前已经回答了,但答案没有为我修复,但是,我只是删除在构buildpath设置的来源的一切,并重新添加