Fixing Error: Step-by-Step Guide to Resolve Could Not Find or Load Main Class Cucumber.CLI.Main

This guide aims to provide a comprehensive solution for resolving the error "Could Not Find or Load Main Class Cucumber.CLI.Main" faced by developers when working with Cucumber. We will walk you through the steps to identify the root cause of the issue and resolve it accordingly.

Table of Contents

  1. Introduction
  2. Prerequisites
  3. Identifying the Root Cause
  4. Step-by-Step Solution
  5. FAQ
  6. Related Links


Cucumber is a popular open-source tool that helps developers write and organize tests in a readable and maintainable format. The error "Could Not Find or Load Main Class Cucumber.CLI.Main" occurs when the Cucumber JVM (Java Virtual Machine) is unable to locate the required class to run your tests. This issue can be caused due to various reasons, such as incorrect project configuration, missing dependencies, or classpath issues.


Before we dive into the solution, make sure you have the following prerequisites in place:

  1. Java JDK installed and JAVA_HOME environment variable set
  2. Maven or Gradle installed (depending on your build tool)
  3. Cucumber installed and configured in your project
  4. A sample Cucumber test suite

Identifying the Root Cause

The following are some of the common reasons for encountering the "Could Not Find or Load Main Class Cucumber.CLI.Main" error:

  1. Incorrect project configuration
  2. Missing or outdated Cucumber dependencies
  3. Issues with the classpath

Step-by-Step Solution

Here's a step-by-step guide to resolve the error:

Step 1: Verify Project Configuration

Ensure your project is correctly configured to use Cucumber. This includes checking your project's build tool configuration file (pom.xml for Maven, build.gradle for Gradle) for the necessary Cucumber dependencies.

For Maven, ensure the following dependencies are present in your pom.xml:


For Gradle, ensure the following dependencies are present in your build.gradle:

dependencies {
    testImplementation 'io.cucumber:cucumber-java:6.10.4'
    testImplementation 'io.cucumber:cucumber-junit:6.10.4'

Step 2: Update Cucumber Dependencies

Ensure you are using the latest version of Cucumber dependencies. Update the version numbers in your build tool configuration file and run the following command to download the latest dependencies:

For Maven:

mvn clean install

For Gradle:

gradle clean build

Step 3: Fix Classpath Issues

If the issue persists even after updating the dependencies, there might be a classpath issue. To resolve this, check the following:

  1. Verify the folder structure of your project. Ensure the Cucumber feature files and step definitions are placed correctly.
  2. Check your test runner class. It should be placed in the same package or a parent package of your step definitions.
  3. Ensure your test runner class is using the correct package name in the @CucumberOptions annotation. For example:
@CucumberOptions(features = "src/test/resources/features", glue = "com.example.stepdefinitions")
public class TestRunner {


Q1: What is Cucumber?

Cucumber is a widely used behavior-driven development (BDD) tool that allows developers to write tests in a human-readable format. It enables better collaboration between developers, testers, and business stakeholders, making it easier to understand the software's requirements and validate its functionality.

Q2: How do I install Cucumber in my project?

To install Cucumber in your project, add the necessary Cucumber dependencies to your Maven or Gradle build configuration file. Refer to the Step-by-Step Solution for more details on adding these dependencies.

Q3: What is the Cucumber.CLI.Main class?

The Cucumber.CLI.Main class is the main entry point for running Cucumber tests from the command line. It is responsible for initializing the Cucumber runtime, parsing command-line arguments, and executing the tests.

Q4: What is the difference between Cucumber and JUnit?

Cucumber is a BDD tool that focuses on testing the software from a user's perspective, whereas JUnit is a widely used testing framework for Java applications. Cucumber tests are written in a human-readable format, making it easier for non-technical stakeholders to understand and collaborate on testing efforts. JUnit tests, on the other hand, are written in Java code, making them more suitable for unit testing individual components of the application.

Q5: Can I use Cucumber with other programming languages?

Yes, Cucumber supports multiple programming languages, including Java, Ruby, JavaScript, and more. The specific implementation varies for each language, but the core concepts and workflow remain the same.

  1. Cucumber Official Website
  2. Cucumber Java Documentation
  3. Cucumber with Maven: A Beginner's Guide
  4. Cucumber with Gradle: A Comprehensive Guide

Happy testing!

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.