线程“主”中的异常java.lang.NoClassDefFoundError:gherkin / formatter / Formatter黄瓜5.2.0

时间:2020-02-12 07:57:35

标签: java cucumber java-13

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

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文件更新为最新版本。仍然没有帮助。然后,我一次消除了一个已安装的罐子,并尝试再次运行,直到我只剩下必要的东西。问题仍然存在。

这是我的设置的摘要:

Snapshot of my project in Eclipse

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

1 个答案:

答案 0 :(得分:1)

我在本地下载并安装了所有jar文件。我已经读到,大量的jar文件可能相互干扰,可能会引起冲突,因此我将所有jar文件更新为最新版本。仍然没有帮助。然后,我一次消除了一个已安装的罐子,并尝试再次运行,直到我只剩下必要的东西。问题仍然存在。

如果您遵循10 minute tutorial,将获得使用Maven依赖管理的介绍。

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

例如:

如果要将Cucumber与JUnit 4和基于注释的步骤定义一起使用,则可以在Maven pom.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] ------------------------------------------------------------------------