3

我正在尝试在 Eclipse 中设置我的第一个 Cucumber 工作。我按照教程视频建议的方式在 Features 文件夹中设置了一个基本功能文件,但尝试作为黄瓜功能执行,我得到以下信息:

Exception in thread "main" java.lang.NoClassDefFoundError: gherkin/formatter/Formatter
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    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:70)
    at cucumber.api.cli.Main.run(Main.java:31)
    at cucumber.api.cli.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: gherkin.formatter.Formatter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 14 more

我已按照我正在观看的教程视频中列出的所有步骤进行操作,但没有成功。我安装了以下内容:

Eclipse 2019-12,Java SE 13

我在本地下载并安装了所有 jar 文件。我已经读到,大量的 jar 文件可能会相互干扰,因此我将所有的 jar 文件都更新到了最新版本。仍然没有帮助。然后,我一次删除一个已安装的罐子,并尝试再次运行,直到我得到最基本的必需品。问题仍然存在。

这是我的设置的片段:

我在 Eclipse 中的项目快照

我愿意接受其他人可以提供的任何帮助

4

1 回答 1

1

我在本地下载并安装了所有 jar 文件。我已经读到,大量的 jar 文件可能会相互干扰,因此我将所有的 jar 文件都更新到了最新版本。仍然没有帮助。然后,我一次删除一个已安装的罐子,并尝试再次运行,直到我得到最基本的必需品。问题仍然存在。

如果您遵循10 分钟的教程,您将获得使用 Maven 依赖管理的介绍。

除了本教程之外,我强烈建议您花时间学习 Maven 或 Gradle 以及 Cucumber。除其他外,这些工具将自动化您的依赖管理,这可以让您的生活更轻松。

例如:

如果您想将 Cucumber 与 JUnit 4 和基于注释的步骤定义一起使用,您将在 Mavenpom.xml文件中声明这个最小的依赖项集。

    <properties>
        <cucumber.version>5.2.0</cucumber.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

通过告诉 Maven 您的依赖项是什么,Maven 可以计算您的传递依赖项,即:您的依赖项的依赖项。

这有很多优点。一个示例是使用该mvn dependency:tree命令列出所有依赖项。这比手动下载 jar 文件并希望您拥有正确的文件要快得多,而且更不容易出错。

$ mvn dependency:tree
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< cucumber:cucumber-java-skeleton >-------------------
[INFO] Building Cucumber-Java Skeleton 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ cucumber-java-skeleton ---
[INFO] cucumber:cucumber-java-skeleton:jar:0.0.1
[INFO] +- io.cucumber:cucumber-java:jar:5.2.0:test
[INFO] |  +- io.cucumber:cucumber-core:jar:5.2.0:test
[INFO] |  |  +- io.cucumber:cucumber-gherkin:jar:5.2.0:test
[INFO] |  |  +- io.cucumber:cucumber-gherkin-vintage:jar:5.2.0:test
[INFO] |  |  +- io.cucumber:tag-expressions:jar:2.0.4:test
[INFO] |  |  +- io.cucumber:cucumber-expressions:jar:8.3.1:test
[INFO] |  |  +- io.cucumber:datatable:jar:3.3.0:test
[INFO] |  |  +- io.cucumber:cucumber-plugin:jar:5.2.0:test
[INFO] |  |  \- io.cucumber:docstring:jar:5.2.0:test
[INFO] |  \- org.apiguardian:apiguardian-api:jar:1.1.0:test
[INFO] +- io.cucumber:cucumber-junit:jar:5.2.0:test
[INFO] \- junit:junit:jar:4.13:test
[INFO]    \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.781 s
[INFO] Finished at: 2020-02-10T23:00:14+01:00
[INFO] ------------------------------------------------------------------------
于 2020-02-14T19:09:45.537 回答