2016-04-21 198 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