# Java Could Not Find or Load Main Class

> Fix this error by passing the class name (not the .class file) to java, checking case, spelling, and your working directory

**URL:** https://sentry.io/answers/what-does-could-not-find-or-load-main-class-mean/

---

## The Problem

After running `java Main`, you get the error message, "Could not find or load main class". What does this mean?

## The Solution

This error message usually means that you gave the wrong file (or no file) to `java` on the command line.

If you run `java thisfiledoesnotexist` in your terminal or command prompt, you should see the same error.

```
Error: Could not find or load main class thisfiledoesnotexist
Caused by: java.lang.ClassNotFoundException: thisfiledoesnotexist
```

A common cause of this error is passing in the `.class` file that `javac` creates by mistake. For example, let's say you have the following code in a file called `HelloWorld.java`:

```java
public class HelloWorld {

    public static void main(String[] arg) {
        System.out.println("Hello");
    }
}
```

When you run `javac HelloWorld.java`, the file `HelloWorld.class` is produced, which is the compiled version of the program that you can execute.

But to run this program, you should use:

```
java HelloWorld
```

Output:

```
Hello
```

If you run:

```
java HelloWorld.class
```

The output will be:

```
Error: Could not find or load main class HelloWorld.class
Caused by: java.lang.ClassNotFoundException: HelloWorld.class
```

Some other common mistakes that might give you this error include:

* Using the wrong case. For example, `java helloworld` instead of `java HelloWorld`
* Typing errors. For example `java hellowrld` instead of `java HelloWorld`
* Using the incorrect directory. First use `cd` to get to the same directory as your `.java` and `.class` files, and then run `java HelloWorld`.

---

*Source: [sentry.io/answers/what-does-could-not-find-or-load-main-class-mean/](https://sentry.io/answers/what-does-could-not-find-or-load-main-class-mean/)*
