我正在尝试运行我的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)
关于如何解决这个问题的任何想法?
感谢。
答案 0 :(得分:38)
ConfigurationManagerTest
。确保类路径上有ConfigurationManagerTest.class
文件。
如果它没有成功编译,或者它是在一个你没有告诉Eclipse项目应该在类路径上的目录中创建的,它可能不存在。
假设您已将测试类放在单独的文件夹中,请确保它显示在“Package Explorer”视图中(而不是“Navigator”视图)。
在项目属性,“Java Build Path”和“Source”选项卡下,您还可以查看是否包含用于构建的源文件夹以及生成.class文件的位置。
答案 1 :(得分:22)
还有一种可能性。我刚才遇到了同样的问题,这里没有一个解决方案有帮助。除了删除和重新创建项目 - 我不想尝试它。有什么帮助,一个接一个地清理项目两次! Clean + build可以重复多次 - 这无济于事。只有干净+清洁,然后构建就行了。 (Eclipse 3.6)。当然,您应该禁用autobuild。
编辑:这篇文章在15.11.2017获得了最后的加分。所以,问题(和解决方案)仍然存在。
答案 2 :(得分: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>
答案 3 :(得分:3)
当我将测试类拖放到不同的包时,这发生在我身上。我刚刚做了以下
宾果!我现在可以进行测试了!
答案 4 :(得分:2)
检查属性 - &gt; java构建路径 - &gt;库。应该没有错误,在我的情况下,maven中有错误。一旦我把所需的罐子放在maven仓库中,它就可以了。
答案 5 :(得分:2)
我遇到了这个问题,弄清楚什么是错的是有点棘手。该项目有一个带有一些错误的依赖项目,它阻止了构建执行。当我删除此依赖项问题时,项目按预期构建。
Ps。:我正在研究一个有很多编译错误的项目,因为我们正在移植一个从Delphi转换为Java的应用程序,所以我一开始并不关心编译错误,这就是为什么它需要我有时间找出问题。
答案 6 :(得分:2)
我尝试了这里描述的所有答案但没有成功,但发现这个thread,其中slomek以一种非常简单的方式解决了问题。只需去项目 - &gt;属性 - &gt; java构建路径。然后通过向上击中右下方将Junit移动到顶部。然后一切都很好。
答案 7 :(得分:1)
另一种可以展现出来的方式就是如果你有一个Eclipse没有告诉你的构建错误。如果编译单元测试失败,则没有.class文件,您将获得ClassNotFoundException。
在我的情况下,缺少第三方jar文件。当我运行测试时,我得到一个弹出窗口,表示&#34;错误存在于所需的项目中#34;。我正在处理一个庞大的项目,而且总是得到那条消息,因为某些来源不适用于eclipse(长篇故事)。它也没有说出错误是什么。所以我点击&#34;继续&#34;然后我得到了例外。
一旦我意识到发生了什么,就可以通过在Run - &gt;下的类路径中添加缺少的jar来轻松修复。调试配置......
我不确定如何最好地检测或防止这种情况发生,除非在出现问题时意识到这种可能性,并检查您最近可能出错的更改。
答案 8 :(得分:1)
对我有用的是删除测试的运行配置。然后右键单击testclass并单击run as junit test。
现在它为我重新创建了正确的运行配置。
答案 9 :(得分:1)
我尝试了这里和其他帖子中提到的所有内容。人们提供的一些解决方案是:
还有很多很多,但我找到的工作方式如下:关闭开发环境。从我的本地Maven存储库中删除项目使用的jar。打开IDE。建立项目。运行测试。
经过几个小时的敲击我的键盘并遵循建议的解决方案,这个有效!
答案 10 :(得分:0)
上述解决方案对我不起作用。
我只是通过关闭并重新打开IDE来重新启动它。
然后错误消失了,并且现在可以正常工作了。
答案 11 :(得分:0)
答案 12 :(得分:0)
您确定您的测试类位于构建文件夹中吗?你在一个单独的JVM(fork = true)中调用junit,因此工作文件夹可能会在调用期间发生变化,并且构建是相对的,这可能会导致问题。
使用-verbose或-debug开关从命令行(而不是从Eclipse)运行ant以查看正在调用的详细类路径/工作目录junit,如果仍然无法解决此问题,请将结果发布回此处
答案 13 :(得分:0)
现在:检查是否没有错误提示它可以是与测试有关的插件(任何插件)。
在我的情况下:
花了几个小时去猜测!!
答案 14 :(得分:0)
我遇到了这个问题,就我而言,问题出在编译上,我在使用maven,而测试类却没有编译。
我通过maven安装(它会编译所有文件)修复了它,您还可以检查其他原因,从而避免测试编译,例如“运行配置”跳过测试以节省时间。
答案 15 :(得分:0)
我知道很久以前就已经回答了这个问题,但答案并没有为我解决这个问题但是,我刚刚从buildpath设置中删除了所有内容并重新添加了它们
答案 16 :(得分:0)
我收到此错误是因为我最近创建了一个新的工作区,并且我的“已安装的JRE”未正确设置。确保在Preferences -> Java -> Installed JREs
选择了JDK的根文件夹。由于某种原因,我在新工作区中的默认设置是JRE。
答案 17 :(得分:0)
您可能需要将以上各项组合在一起才能解决此问题。我通常会在收到此错误
mvn clean install
,看到一个编译错误,导致我的测试无法完全编译。
假定已解决上述问题,请尝试单击“项目”,然后单击“清理”,然后清理包含要运行的测试的项目。还要确保选中“自动生成”。
答案 18 :(得分:0)
我也遇到了同样的例外,互联网解决方案都没有帮助我。 我的项目包含多个模块。我的Junit代码驻留在Web模块中。它指的是客户端模块的代码。
最后,我试过: 右键单击(Web模块)项目 - &gt;构建路径 - &gt;来源标签 - &gt;链接源 - &gt;添加了src文件位置(客户端模块&#39;)
多数民众赞成!它就像一个魅力 希望它有所帮助
答案 19 :(得分:0)
在“Package Explorer”视图中,右键单击您的测试类,然后“Build Path”&gt;&gt;“Include”,它应该没问题。
答案 20 :(得分:0)
我的Eclipse Helios调试了Junits时出现了类似的问题。我的问题没有什么不同,因为我能够成功运行Junits,但是当我在调试相同的JUNIT时遇到ClassNotFoundException。
我已经在Stackoverflow.com和其他地方的论坛中尝试过各种不同的解决方案,但似乎没有任何效果。在用这些问题敲了近两天之后,我终于想出了解决方案。
如果解决方案似乎都不起作用,只需删除工作区中创建的.metadata文件夹即可。这会产生额外的导入项目的开销和你已经完成的各种配置,但这些肯定会解决这些问题。
希望这些有所帮助。
答案 21 :(得分:0)
如果您有maven项目,请尝试运行:
mvn clean compile
然后在eclipse clean&amp;建立你的项目。
答案 22 :(得分:0)
另一种变化。
不知何故,我以前工作的测试类似乎是从其他位置运行的;我运行测试时,我的编辑不会执行。
我发现$ {project_loc} src / test / java文件的输出文件夹不是我的预期。它无意中被设置为$ {project_loc}目标/类。 我在项目属性,Java Build Path,Source选项卡中正确设置了它。
答案 23 :(得分:0)
在资源管理器中右键单击项目:构建路径 - &gt;订单和出口 - &gt;选择JRE System Library [jdk]并单击Bottom按钮。
答案 24 :(得分:0)
我将此答案添加为上述解决方案评论。
.project
即可。使用正确的XML编辑器,否则您将从Eclipse获得fatal error
无法打开此项目的统计信息。Java
添加到<nature>org.eclipse.jdt.core.javanature</nature>
来实现我的项目性质<natures></natures>
。<buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand>
缩进到<buildSpec></buildSpec>
。Run as JUnit
... 成功 答案 25 :(得分:0)
盖伊回答上面的一个变种,涉及额外的建造者。假设您已配置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><project>/.externalToolBuilders/myprojectantlaunch.launch</value>
</dictionary>
</arguments>
</buildCommand>
</buildSpec>
如果Ant构建和Eclipse构建具有不同的输出位置,Eclipse可能无法在类路径上找到测试类。对于Ant构建器,还要检查已配置的目标,以进行清理,自动,手动和后清理构建,以确保调用构建单元测试的目标。