Eclipse中的JUNIT测试类-java.lang.ClassNotFoundException
我正在尝试运行junit测试(以验证属性文件是否正确加载),但是 我得到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
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
当我将测试类拖放到不同的包时,这种情况发生在我身上。我只是做了下面的事情
宾果!我现在可以运行测试了 以上盖伊答案的一个变体,涉及到额外的建设者。假设您配置了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><project>/.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
添加到
中,我创建了我的项目natureJava
org.eclipse.jdt.core.javabuilder
行添加到
作为JUnit运行
成功我有这个问题,要意识到问题出在哪里有点棘手。该项目有一个依赖项项目,但出现了一些错误,导致生成停止执行。当我删除这个依赖性问题时,项目按预期构建
注:我正在做一个有很多编译错误的项目,因为我们正在移植一个从Delphi转换成Java的应用程序,所以我一开始并不关心编译错误,这就是为什么我花了一些时间来找出问题的原因。还有一种可能性。我刚才也遇到了同样的问题,这里没有一个解决办法。除了删除和重新创建项目-我不想尝试它。有帮助的是,一次又一次地把项目清理了两次!Clean+build可以重复任意次数-这没有帮助。只有清洁+清洁,然后构建就可以了。(Eclipse 3.6)。当然,您应该为此禁用autobuild
编辑:这篇文章的最后一个加号是2017年11月15日。因此,问题(和解决方案)仍然是实际的。我尝试了这里描述的所有答案,但都不起作用,但发现slomek以非常简单的方式解决了问题。只需转到项目->属性-->java构建路径。然后点击右上下移动Junit到顶部。然后所有的东西都编译得很好。我尝试了这里和其他帖子中提到的所有东西。人们提出的一些解决方案是:
经过数小时的敲击键盘和遵循建议的解决方案,这一个成功了 检查属性->java构建路径->库。应该没有错误,在我的例子中,maven中有错误。一旦我将所需的jar放入maven repo中,它就工作得很好了在浏览器中右键单击项目:构建路径->订单和导出->选择JRE系统库[jdk],然后单击底部按钮。对我有效的是删除测试的运行配置。然后右键单击testclass并单击RunasJUnitTest 现在它重新创建了一个正确的r
mvn clean compile