-1

Have created a Maven project and added the following dependencies. So when I run the feature file, I get the error:

Exception in thread "main" java.lang.NoClassDefFoundError: io/cucumber/datatable/dependency/com/fasterxml/jackson/databind/JavaType
    at io.cucumber.datatable.DataTableType.<init>(DataTableType.java:78)
    at io.cucumber.datatable.DataTableTypeRegistry.<init>(DataTableTypeRegistry.java:23)
    at io.cucumber.stepexpression.TypeRegistry.<init>(TypeRegistry.java:19)
    at cucumber.runtime.Runtime.loadBackends(Runtime.java:87)
    at cucumber.runtime.Runtime.<init>(Runtime.java:42)
    at cucumber.api.cli.Main.run(Main.java:34)
    at cucumber.api.cli.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: io.cucumber.datatable.dependency.com.fasterxml.jackson.databind.JavaType
    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)
    ... 7 more

Also the JDK I am using is jdk1.8.0_121.

<dependencies>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-jvm</artifactId>
            <version>1.2.5</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.cobertura</groupId>
            <artifactId>cobertura</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-jvm-deps</artifactId>
            <version>1.0.5</version>
        </dependency>
        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>gherkin</artifactId>
            <version>2.12.2</version>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>2.0.2-beta</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

Can someone let me know If I am missing any library or need to modify anything ? This could be a simple question but I am unable to find the solution as I have just started working with Cucumber framework.

Vinay Sagar
  • 21
  • 3
  • 9
  • 1
    You need to add cucumber-core dependency. Also in below answer you are mixing cucumber versions from 3.0.2 to 1.2.5. It should ideally be the same – Grasshopper Jun 08 '18 at 18:20

4 Answers4

1

Add

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>datatable</artifactId>
    <version>1.1.12</version>
</dependency>

to your POM

Ida Amit
  • 1,411
  • 2
  • 13
  • 27
0

To use Cucumber with JUnit, you only need the following dependencies, as you can find in the Cucumber docs here and here:

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java8</artifactId>
    <version>3.0.2</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>3.0.2</version>
    <scope>test</scope>
</dependency>    

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

Note:

  1. Make sure to use the same Cucumber version for all Cucumber dependencies; otherwise you might get some unpredictable behaviour.

  2. JUnit 5 is not yet supported.

Marit
  • 2,399
  • 18
  • 27
0

Make sure when you use cucumber dependencies in your maven project, keeps all the dependencies the same version as long as possible.

And, if you are using cucumber jars with group id info.cukes, then use all the dependencies with same group.

If you wanna upgrade, use the latest jars with io.cucumber which are 3.x.

Jithu Paul
  • 154
  • 2
  • 15
-2

Got it finally after a researching so much. Following dependencies have resolved issue.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>Selenium</groupId>
    <artifactId>Cucumber</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Cucumber</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java8</artifactId>
            <version>3.0.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.sun</groupId>
            <artifactId>tools</artifactId>
            <version>1.6.0</version>
            <scope>system</scope>
            <systemPath>C:\Program Files\Java\jdk1.8.0_121\lib\tools.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-jvm</artifactId>
            <version>1.2.0</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.cobertura</groupId>
            <artifactId>cobertura</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-jvm-deps</artifactId>
            <version>1.0.3</version>
        </dependency>
        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>gherkin</artifactId>
            <version>2.12.2</version>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>2.0.2-beta</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>datatable-dependencies</artifactId>
            <version>1.0.2</version>
        </dependency>
    </dependencies>
</project>
Vinay Sagar
  • 21
  • 3
  • 9
  • Please note that you are using a really, really old version of cucumber, as v3 was recently released. You might want to upgrade. – Marit Jun 12 '18 at 12:27