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类拖放到不同的包时,这发生在我身上。 我只是做了以下
- 在文本编辑器中保存课程。
- 从eclipse项目浏览器中删除了违规的类。
- 重新创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是:
- 更改testing的输出文件夹
- 为将从Maven运行testing编译的项目创build一个自定义构build器
- 在项目构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><project>/.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审查。
- 您只需编辑主项目文件夹中的文件
.project
。 使用适当的XML编辑器,否则你会从Eclipse得到一个fatal error
,你不能打开这个项目。 - 我通过将
<nature>org.eclipse.jdt.core.javanature</nature>
到<natures></natures>
来使自己的项目变得非常<natures></natures>
。 - 然后,我将这些行正确地缩进
<buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand>
到<buildSpec></buildSpec>
。 -
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设置的来源的一切,并重新添加