java.lang.NoClassDefFoundError исключение при запуске теста огурца с использованием JUnit

Я пытаюсь запустить тест с огурцом с помощью 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-файлов Cucumber в Eclipse и добавил плагин cucumber для eclipse по этой ссылке - http://cucumber.github.com/cucumber-eclipse/update-site.

введите описание изображения здесь

Я нашел несколько похожих вопросов в SE и попробовал упомянутые там предложения, но безуспешно. Я попытался понизить версию Gherkin до более ранней, как это предлагается в приведенных ниже ссылках. Но это не решает проблемы.

В ответах на приведенные ниже вопросы предлагается добавить ту же версию файлов jar-файлов с огурцами. Но поскольку файлы jar, доступные в репозитории Maven, не имеют той же версии, я не уверен, как / где я могу загрузить ту же версию всех файлов jar огурца.

Приветствуется любая помощь в решении этой проблемы.


person justcurious    schedule 21.04.2016    source источник


Ответы (2)


Согласно this, cucumber-java-1.2. 4 требует gherkin-2.12.2, а вы предоставляете gherkin-4.0.0.

Вы можете загрузить версию 2.12.2 с здесь, удалить версию 4.0.0 и посмотрите, работает ли он тогда (вам может потребоваться перезапустить Eclipse).

person Kiril S.    schedule 21.04.2016
comment
Спасибо, братан, у меня это сработало. столкнулся с той же проблемой - person Jwala Kumar; 08.11.2020

Такое бывает у меня и решаю, если менять версии jar:

  • junit 3.8.1
  • селен 2.47.1
  • огурец ява -1.2.2
  • огурец можжевельник 1.2.2
person pooja patil    schedule 16.01.2018