2016-04-21 149 views
3

我试图用JUnit运行黄瓜测试,并且得到java.lang.NoClassDefFoundError异常。使用JUnit运行黄瓜测试时出现java.lang.NoClassDefFoundError异常

的JUnit代码:

package ctest; 

import org.junit.runner.RunWith; 

import cucumber.api.CucumberOptions; 
import cucumber.api.junit.Cucumber; 

@RunWith(Cucumber.class) 
@CucumberOptions(
features = "Feature" 
,glue={"stepDefinition"} 
) 

public class Runner { 

} 

例外:

java.lang.NoClassDefFoundError: gherkin/formatter/Formatter 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at java.security.SecureClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.access$100(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at cucumber.runtime.formatter.PluginFactory$1.<init>(PluginFactory.java:53) 
at cucumber.runtime.formatter.PluginFactory.<clinit>(PluginFactory.java:52) 
at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:69) 
at cucumber.runtime.RuntimeOptionsFactory.create(RuntimeOptionsFactory.java:25) 
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:55) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
Caused by: java.lang.ClassNotFoundException: gherkin.formatter.Formatter 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 34 more 

我已经添加了低于黄瓜jar文件到Eclipse,并加入黄瓜插件从THI链接到日食 - http://cucumber.github.com/cucumber-eclipse/update-site

enter image description here

我发现SE一些类似的问题,并试图提到的有,但徒劳的建议。我尝试将小黄瓜降级到下面的链接中建议的较低版本。但是这并不能解决问题。

下面的回答都建议增加的黄瓜jar文件相同的版本。但是由于Maven版本中可用的jar文件本身不具有相同的版本,因此我不知道如何/在哪里可以下载同一版本的所有黄瓜jar文件。

任何有助于解决这个问题是非常赞赏。

回答

3

this黄瓜的Java-1.2.4需要小黄瓜-2.12.2,而你提供小黄瓜-4.0.0

您可以从here下载版本2.12.2,删除4.0.0版本,然后查看它是否可用(您可能需要重新启动Eclipse)。

+0

Greate,这对我很有用。 谢谢 –

0

它发生在我身上,如果更改版本的jar解决:

  • 的JUnit 3.8.1
  • 硒2.47.1
  • 黄瓜的Java -1.2.2
  • 黄瓜的JUnit 1.2.2