Cucumber Exception: java.lang.ClassNotFoundException: cucumber.io.ResourceLoader

52,120

Solution 1

It looks like you're missing the cucumber-core library.

Try adding the following to your dependencies.

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>1.1.8</version>
    </dependency>

Also, you appear to be mixing and matching versions. Try using the same version for all the cucumber-* libraries.

Solution 2

You are trying to run Cucumber in java, and you haven't loaded the Cucumber-java dependency? How's your Cucumber supposed to execute?

Here are the minimum dependencies needed to get your Cucumber up & running:

-Cucumber-java (1.2.2) -Cucumber-junit (1.2.2) -Cucumber-picocontainer (1.2.2) -junit (4.12)

Maven manages the rest of the dependencies. Make sure you have the latest dependencies, and that you are not mixing and matching versions (for example, I've used all 1.2.2 version)

Edit: Just noticed that your Cucumber-java is at the bottom of the pom.xml. It's a good practice to order your dependencies....all cucumber dependencies go together, one after another.

Solution 3

Make sure all your cucumber-* jars have the same version, Try this thing - It should resolve your issue.

Share:
52,120
Zain
Author by

Zain

Updated on July 09, 2022

Comments

  • Zain
    Zain almost 2 years

    I am facing an error whenever I run the cucumber test by Junit. Here is the following Exception. Any help will be awesome

    NOTE:

    THERE IS NO ERROR IN THE PROJECT

    java.lang.NoClassDefFoundError: cucumber/io/ResourceLoader
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2398)
        at java.lang.Class.getConstructor0(Class.java:2708)
        at java.lang.Class.getConstructor(Class.java:1659)
        at cucumber.runtime.Reflections.hasConstructor(Reflections.java:53)
        at cucumber.runtime.Reflections.instantiateSubclasses(Reflections.java:29)
        at cucumber.runtime.Runtime.loadBackends(Runtime.java:96)
        at cucumber.runtime.Runtime.<init>(Runtime.java:63)
        at cucumber.api.junit.Cucumber.createRuntime(Cucumber.java:74)
        at cucumber.api.junit.Cucumber.<init>(Cucumber.java:61)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
        at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    Caused by: java.lang.ClassNotFoundException: cucumber.io.ResourceLoader
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        ... 28 more
    

    Here is how my POM.xml looks like:

    <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>Test</groupId>
      <artifactId>Cucumber</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
            </dependency>
    
               <!-- Cucumber -->   
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>1.1.8</version>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-chrome-driver</artifactId>
                <version>2.42.2</version>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>1.0.0.RC5</version>
                <scope>test</scope>
            </dependency>
    </dependencies>
    </project>
    

    Here is the image of my project structure: enter image description here

    And here is my RunIT.Java Class

    package com.Cucumber;
    
    import org.junit.runner.RunWith;
    
    import cucumber.api.CucumberOptions;
    import cucumber.api.junit.Cucumber;
    
    
    @RunWith(Cucumber.class)
    @CucumberOptions(
            tags={"@mysingle"},
            features = {"."})
    public class RunIT {
    
    }