Eclipse – java.lang.ClassNotFoundException

当试图从Eclipse启动我的JUnit-Test时,我得到一个“ClassNotFoundException”。 当从控制台运行“mvntesting” – 一切工作正常。 另外,在Eclipse中没有报道的问题。

我的项目结构如下:

  • 父项目(包装)
    • Web项目(战争包装 – 我的JUnittesting在这里)
    • Flex项目
    • configuration项目

编辑:怎么能不能find这个类? 这是一个简单的HelloWorld应用程序,没有特殊的库。

这里是我的JUnit的运行configuration: alt text http://www.walkner.biz/_temp/runco​​nfig.png


Testclass(但正如我所说;它不适用于一个简单的HelloWorld …):

import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import biz.prognoserechnung.domain.User; import biz.prognoserechnung.domain.UserRepository; import biz.prognoserechnung.domain.hibernate.UserHibernateDao; public class UserDaoTest { /** * the applicationcontext. */ private ApplicationContext ctx = null; /** * the user itself. */ private User record = null; /** * Interface for the user. */ private UserRepository dao = null; @Before public void setUp() throws Exception { String[] paths = { "WEB-INF/applicationContext.xml" }; ctx = new ClassPathXmlApplicationContext(paths); dao = (UserHibernateDao) ctx.getBean("userRepository"); } @After public void tearDown() throws Exception { dao = null; } @Test public final void testIsUser() throws Exception { Assert.assertTrue(dao.isUser("John", "Doe")); } @Test public final void testIsNoUser() throws Exception { Assert.assertFalse(dao.isUser("not", "existing")); Assert.assertFalse(dao.isUser(null, null)); Assert.assertFalse(dao.isUser("", "")); } } 

我已经多次遇到过这种情况,经过很多尝试,我find了解决办法。

检查您的项目构buildpath并为每个文件夹启用特定的输出文件夹。 一个接一个地浏览项目的每个源文件夹,并设置maven使用的输出文件夹。

例如,你的web项目的src/main/java应该在web项目下有target/classes ,testing类也应该在web项目下有target/test-classes等等。

使用这个configuration将允许你在eclipse中执行unit testing。

还有一个build议,如果你的Web项目的testing需要一些在资源下的configuration文件,一定要将该文件夹作为源文件夹,并进行正确的构buildpathconfiguration。

希望能帮助到你。

卡洛斯的方法帮助 Eclipse – java.lang.ClassNotFoundException

尝试检查junit运行configuration的类path:

  1. 打开你的运行configuration
  2. 点击你想开始的jUnit-Test
  3. 进入classpath选项卡
  4. 尝试添加一个文件夹(单击用户条目,单击高级,单击添加文件夹,单击确定并search输出文件夹为您的testing类(那些您可以findprojektproperties java构buildpath,源))

为我工作。

你的构build类path是正确的,这就是为什么你可以编译。 您的JUnit的类path需要被检查。 进入“运行”菜单并select“打开运行对话框”。 在那里你应该看到一个左边的树,JUnit作为一个选项。 打开该节点并find并select您的testing。 在右侧窗格中,您将看到一个类path选项卡。 看看,以确保您的类,testing正试图实例化将被发现。

编辑:

这似乎是一个问题与Maven和它的行为后发布更改默认的Eclipse输出文件夹。 我见过的解决scheme描述在哪里

  • 把maven放在jre工作的bootclasspath中,或者
  • 运行mvn clean test做到这一点
  • 刷新所有的eclipse项目,导致重build修复了这个问题
  • 去你的项目,并selectMaven->更新configuration解决了这个问题

与前三个,有问题的报告反复。 最后看起来对我最好,但如果它不起作用,请尝试其他。

这里和这里是一些信息

该问题可能会丢失生成文件夹中的类文件。 一个解决scheme是清理项目并重build它。

这是我解决这个问题的方法。 当然,很多事情都可能导致它发生。 对我来说,Maven2(不是Eclipse插件)设置了eclipseconfiguration文件来使用不同的构build器(aspectJ),但是我没有eclipse中的插件。

http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html

欢呼拉蒙·巴克兰

这里有许多复杂的build议。

在拖放资源或执行类名重构之后,我通过Maven项目多次遇到这个问题。

如果发生这种情况,只需通过terminal/文件浏览器复制(不移动)testing用例( .java )到另一个位置, right-click -> Delete在Eclipse中删除,select删除磁盘时,给定选项,移动/复制将文件复制到原始文件位置,然后在Eclipse中select您的项目,然后按F5刷新资源。

这是快速和容易做的,并已永久解决了我的问题,每次我。

Sachin的权利:即使有正确的类path,问题标签将显示一些依赖项或资源/项目有错误需要修复,以便Maven在您的testing类中创build或更改时自动创build和创build类。

“嗨,

它非常古老的七月(哪一年),但我有同样的问题。

实际的问题发现,eclipse不能为java文件生成类文件,classpath是正确的。

看到问题标签,并检查你的项目是否缺less东西/文件。 你可以创build一个新的proj并逐个添加文件,并build立它们,直到它停止编译和创build类(检查工作区/ proj / bin /包/文件夹的类)

它的奇怪,但真实的,ecplise没有complaation失败,因为20个java文件中有4个使用了一个丢失的图像。 结果没有一个java文件被编译。

CLASSPATH在这里不是问题。“

我们有确切的exception(在Win7上使用SpringSource工具,tomcat),原因是我们已经重构了一个从SubDomain.java到Subdomain.java(D vs d)的文件名(重命名一个文件),不知何故,虽然SpringSource是显示新名称Subdomain.java。 解决的办法是删除文件(通过SpringSource),并在名称Subdomain.java下重新创build,并复制粘贴其以前的内容。 就那么简单。

我有完全相同的问题,但我知道了! 转到您的项目文件并右键单击它,然后单击Refresh或点击F5。 然后尝试运行它。 如果它仍然不起作用,那就把它忘掉吧,因为我的确有同样的问题,它只是意味着你的Eclipse版本是垃圾。

我所做的只是属性 – > Java构buildpath – >订单和导出 – >启用所有未经检查的框 – >一直移动Junit

嗯,看起来有点古怪,试着在课堂上面用下面的注解来运行它:

 @RunWith(SpringJUnit4ClassRunner.class) public class UserDaoTest { } 

让我知道你如何继续。

检查是否已经自动启用了构build。 如果你想确保你的testing类正在被编译,请清除Maven目标文件夹(以及Eclipse可能使用的任何bin文件夹)。 你也使用m2eclipse,因为我觉得它有点问题。

解决我的问题是相似的:库是无效的。 如果您查看项目的.classpath文件,则会看到键/值kind =“lib”的classpathentry标签。 我的一些是不正确的。

直到closuresvalidation设置,我才发现这一点。 也就是说,JSP文件中有太多的错误,所以类path错误并不明显(甚至可能出现)。 因此,没有任何东西被编译到目标输出文件夹中,但是为什么没有有用的错误。

点击project->properties->Java build path->Source并检查每个src文件夹是否仍然存在或者最近被删除。 纠正任何缺less的path或不正确的path,重build并运行testing。 它会解决这个问题。

试着

 Link : [here][1] Open your run configurations Click on the jUnit-Test you want to start go to the classpath tab Try to add a folder (click on user entries, click on advanced, click on add folders,click on ok and search the outputfolder for your test classes(those you find under projektproperties java build path, source)) 

之后工作

Maven 2 LifeCycle >>testing

我已经尝试了此页面上的所有解决scheme:刷新项目,重build,所有项目干净,重新启动Eclipse,重新导入(甚至)项目,重buildmaven和刷新。 没有工作。 做了什么工作,是复制了一个新的名字 ,运行良好 – 奇怪,但真实的类。

经过一段时间,我把它固定下来:

  1. 通过Run菜单
  2. selectRun Configurations
  3. select与您的unit testing关联的运行configuration。
  4. 通过按删除或单击红色X从Run Configuration删除条目。

一些东西肯定与caching的运行configuration搞砸了。

我也遇到了这个问题,并能为我的情况提出一个足够的解决scheme。 如果您的Eclipse项目在项目根目录中有一个.classpath文件(请参阅Navigator视图而不是Package Explorer视图),请确保您的Maven classpathentry出现在JRE Con​​tainer classpathentry之前。

 <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> </classpath> 

如果您的项目没有.classpath文件,您可以编辑您的项目的Java构buildpath来切换订单和导出。 如果您的项目具有.classpath文件,并且只更改Java Build Path中的sorting,则会看到sorting不受影响,问题将继续出现。

而一个项目 – >干净的事情在你做出改变之后永远不会伤害你的东西。

从eclipse中删除项目(不是从硬盘),在某种程度上清理工作区,并重新导入到eclipse项目再次为我工作。

我解决了那个Bulitpath—>库—>添加库—> Junit check junit4

您是否尝试过右键单击您的项目根目录,select“属性”,并确保CLASSPATH正确? 如果我记得正确的话,那就是你怎么做的。

有关Eclipse运行unit testing的方式,需要您以特殊方式将junit JAR添加到运行时CLASSPATH中?

我使用IntelliJ,所以我没有这些问题。

我自己检查Eclipse,但是我更喜欢不在桌面上。

请指向正确的JDK从Windows>首选项> Java>已安装的JRE。

不要指向jre,指向一个适当的JDK。 我指向JDK 1.6U29并刷新了这个项目。

此后,问题消失了,jUnittesting工作正常。

谢谢,
-Tapas

我最近在Eclipse中遇到了同样的错误,即无论如何更改configuration,Eclipse IDE都找不到Unittesting类。 在这里和其他网站学习以前的post,我已经检查了两次的类path和源信息,并上下移动源文件夹和库,在“运行configuration”和“Java构buildpath“configuration窗口,我也清理了项目并重build了它,但没有一个技巧适用于我。 具体的Java项目是一个旧的ANT编译的项目,并且在Eclipse库中包含了很多jar。

然后,我改变了unit testing类来添加一个main()方法,并右键单击它来“运行”Java应用程序,而不是JUnittesting,突然间,Eclipse似乎醒来,并正确识别类。 之后,我将其切换回unit testing应用程序,它仍然在工作。

这似乎是Eclipse中的一个错误,我猜测大量的库(> 260)可能会混淆JVMfind我的JUnit类的能力。

确保您的testing启动configuration不包含以下行,或尝试启用自动Maven依赖项pipe理。

 <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/> 

我在这篇长篇文章中尝试了所有我读过的东西,而且,对于我来说,却不是单击testing类并selectRun as JUnit test ,而是单击testing方法并作为JUnit test运行。 我不知道为什么?

从eclipse里面的JUnittesting也给了我NoClassDefFoundError。 从命令行运行'mvn clean test'给了我几个jar子的错误信息:无效的LOC头(坏签名)从本地m2库删除这些jar子,再次运行'mvn clean test'解决了我的问题。

我有同样的问题。 我所做的一切是,

一世)。 生成的Eclipse工件

mvn clean eclipse:eclipse

ⅱ)。 刷新项目并重新运行你的junittesting。 应该工作正常。

此外,双击检查eclipse“Web部署大会”对话框。

这可以find:项目属性 – >部署大会。

最近我有一个eclipse插件修改我的一个web项目,并添加〜mysteriously〜添加maventesting目录/ src / test / java,/ src / test / resources到部署程序集。 UGGGG!

这就是为什么我的项目工作正常,当我build立和部署到tomcat直接maven,没有ClassNotFoundExceptions …但是,当我通过Eclipse部署Whammo! 我开始获取ClassNotFoundExceptions,因为TestCode正在部署。

埃里克

这意味着你的pom.xml有未解决的问题。 打开问题视图相应地解决。 然后,您将能够成功运行testing用例而不会遇到classnotfoundexception。

Java Build Path中改变类path构件的顺序为我解决了它。

  1. 右键单击该项目并转到项目构buildpath。
  2. 转到Order and Export选项卡,然后将JRE系统库移到源代码之后。

这应该解决它。

JUnit 4.4不支持JMockit / JUnit集成。 只有版本4.5或更新的支持。

而运行Web应用程序我们大多数人会得到这个例外。 当你有这个错误,你有.class文件在适当的文件夹。

在Web应用程序中,所有的.class文件应该位于WEB-INF \ Classes文件夹中。 如果您在Eclipse中运行Web应用程序,请按照以下步骤操作

第1步:右键单击项目文件夹,然后select属性第2步:点击“Java Build Path”你会看到不同的标签,如“源”,“项目”,“库”等第3步:select源文件夹。 在这个下面你会看到你的项目的详细信息第4步:在“源”文件夹,你会看到默认输出文件夹选项。 在这里你必须给WEB-INF下的classes文件夹。 只需要像projectname / WebContent / WEB-INF / classes这样的path结构取决于你的应用程序请记住在这里你不需要创build“类”文件夹。 Eclipse将为您创build它。 第5步:点击“确定”,并执行项目清理和生成。 这就是你的应用程序现在将运行。