java.lang.NoClassDefFoundError 在 Cucumber 测试包中

java.lang.NoClassDefFoundError in Cucumber test package

我正在尝试使用 Eclipse 设置一个非常简单的 Cucumber 测试环境。我正在按照教程并使用所需的参考库创建项目:

Referenced Libraries

我创建了包含以下内容的 CucumberRunner.java 文件:

package cucumber;

import org.junit.runner.RunWith;

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

@RunWith(Cucumber.class)

@CucumberOptions(
    plugin = { "pretty", "json:target/cucumber.json" },
    features = "src/cucumber"
    )

public class CucumberRunner {

}

并创建特征文件和步骤定义。如果我 运行 来自,功能文件,测试 运行 正确。但是,如果我从 CucumberRunner.java 运行,我得到:

java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetPublicMethods(Class.java:2902)
    at java.lang.Class.getMethods(Class.java:1615)
    at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)
    at cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)
    at cucumber.runtime.Runtime.<init>(Runtime.java:92)
    at cucumber.runtime.Runtime.<init>(Runtime.java:70)
    at cucumber.runtime.Runtime.<init>(Runtime.java:66)
    at cucumber.api.junit.Cucumber.createRuntime(Cucumber.java:80)
    at cucumber.api.junit.Cucumber.<init>(Cucumber.java:59)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

我已经按照另一个已回答的问题安装了 Cucumber Eclipse 插件,所以我完全不知道为什么会这样。如果我尝试添加 JAR 以包含缺少的库,我似乎只是将问题转移到另一个缺少的库中。

我认为这一定与我使用的库版本有关,但我在这方面完全是新手,没有解决问题的经验。

如有任何帮助,我们将不胜感激。

根据上面 Sid 的评论,重命名黄瓜 class 解决了这个问题。

在我的例子中,我必须将 glue="cucumber.steps" 添加到 CucumberOptions 列表中。