【问题标题】:IntelliJ and cucumber not workingIntelliJ 和黄瓜不工作
【发布时间】:2018-06-24 22:56:48
【问题描述】:

我正在使用 IntelliJ Idea Ultimate 2018.1,在我的 java 项目中,我使用 Cucumber 和 Gherkin 实现了一些 BDD。 当我尝试右键单击功能文件并运行它时,我看到以下错误

Exception in thread "main" java.lang.NoClassDefFoundError: gherkin/formatter/Formatter
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at cucumber.runtime.formatter.PluginFactory.loadClass(PluginFactory.java:174)
    at cucumber.runtime.formatter.PluginFactory.pluginClass(PluginFactory.java:166)
    at cucumber.runtime.formatter.PluginFactory.getPluginClass(PluginFactory.java:223)
    at cucumber.runtime.formatter.PluginFactory.isStepDefinitionReporterName(PluginFactory.java:206)
    at cucumber.runtime.RuntimeOptions$ParsedPluginData.addPluginName(RuntimeOptions.java:456)
    at cucumber.runtime.RuntimeOptions.parse(RuntimeOptions.java:160)
    at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:112)
    at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:105)
    at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:97)
    at cucumber.api.cli.Main.run(Main.java:30)
    at cucumber.api.cli.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: gherkin.formatter.Formatter
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

这种情况已经持续了几天。过去工作得很好。 安装了用于 java 和 gherkin 插件的黄瓜。 我尝试下载新版本的 IntelliJ,但没有成功。

我在项目中的依赖项如下

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

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

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-spring</artifactId>
        <version>${cucumber.version}</version>
    </dependency>

而我的功能文件类似如下

功能:拦截器累积

Scenario: Blocker Accumulation
    Given I am logged as a user
    And I have an In-progress activity
    And it has been previously blocked for 16 days
    And now is not blocked
    When I block the activity for other more 6 days
    Then the total blocking days is 22

我可以尝试什么?我有什么错? 谢谢

【问题讨论】:

  • 需要添加黄瓜插件并配置胶水

标签: java intellij-idea cucumber noclassdeffounderror


【解决方案1】:

您需要更新 Cucumber for Java 插件。 (这可能包括卸载/安装以使其正常工作)。

【讨论】:

    【解决方案2】:

    问题是 cucumber 3 和 intelliJ cucumber 插件之间的兼容性问题。

    为了使一切正常,我将 cucumber.version 值从 3.0.2 更改为 2.4.0。

    【讨论】:

      【解决方案3】:

      您将需要添加一些其他依赖项。你错过了gherkin.jar

      <dependency>
          <groupId>io.cucumber</groupId>
          <artifactId>cucumber-jvm-deps</artifactId>
          <version>1.0.6</version>
      </dependency>
      <dependency>
          <groupId>io.cucumber</groupId>
          <artifactId>gherkin-jvm-deps</artifactId>
          <version>1.0.4</version>
      </dependency>
      <dependency>
          <groupId>io.cucumber</groupId>
          <artifactId>gherkin</artifactId>
          <version>5.0.0</version>
      </dependency>
      <dependency>
          <groupId>io.cucumber</groupId>
          <artifactId>tag-expressions</artifactId>
          <version>1.1.1</version>
      </dependency>
      <dependency>
          <groupId>io.cucumber</groupId>
          <artifactId>cucumber-core</artifactId>
          <version>${cucumber.version}</version>
      </dependency>
      

      如果您需要 java-8 对 lambda 样式 stepdefs 的支持,请添加 cucumber-java8 依赖项。

      【讨论】:

      • 这些版本非常旧,并不是所有单独的依赖都需要,因为有些是传递依赖。查看需要依赖项的 Cucumber documentation 及其最新版本。
      猜你喜欢
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多