[Fixed] Error: Could not find or load main class


Java Guide to Fix the Error "Could not find or load main class".

1. Overview

In this tutorial, We'll learn What does "Could not find or load main class" mean?

A common problem that new Java developers experience is that their programs fail to run with the error message: Could not find or load main class.

What does this mean, what causes it, and how should you fix it?

The problem is with this java run command

java  command syntax

We have gathered all these solutions from StackOverflow page and arranged in a simple manner to understand easily.

[Fixed] Error: Could not find or load main class

Please read section 2 and 5 to get a clear understanding. Section 3 tells about all areas where we do mistake usually. But, recommend reading the complete article.

2. Error Definition

According to the error message ("Could not find or load main class"), there are two categories of problems:

2.1 Main class could not be found

The main class could not be found when there is a typo or wrong syntax in the fully qualified class name or it does not exist in the provided classpath.

2.2 Main class could not be loaded

The main class could not be loaded when the class cannot be initiated, typically the main class extends another class and that class does not exist in the provided classpath.

For example:

public class YourMain extends org.apache.camel.spring.Main

If camel-spring is not included, this error will be reported.

Note: To solve "Could not find or load main class", we. should go to the starting of the class package folder and run java command with the fully classified class name. Or missing the class in classpath. 

3. Java run command syntax

First of all, we need to understand the correct way to launch a program using the java (or javaw) command.

The normal syntax1 is below:

java [ <option> ... ] <class-name> [<argument> ...]

<option>: is a command line option - starting with a "-" character
<class-name> is a fully qualified Java class name
<argument> is an arbitrary command line argument that gets passed to your application.

The fully qualified name (FQN) for the class is conventionally written as in Java source code.



However, some versions of the java command allow you to use slashes instead of periods.



which (confusingly) looks like a file pathname but isn't one. Note that the term fully qualified name is standard Java terminology ... not something I just made up to confuse you :-)

Here is an example of what a java command should look like:

java -Xmx100m com.java.w3schools.ListUsers jhon peter

where -Xmx indicates the maximum allocated memory for this run.

The above command performs the following steps when we run command.

A) Search for the compiled version of the com.java.w3schools.ListUsers class.
B) Load the class.
C) Check that the class has a main method with signature, return type and modifiers given by public static void main(String[]). (Note, the method argument's name is NOT part of the signature.)
D) Call that method passing it the command line arguments ("Jhon", "Peter") as a String[] and passed to the main method.

4. Reasons why Java cannot find the class

When we get the message "Could not find or load main class ...", that means that the first step A has failed. The java command was not able to find the class.

4.1 You made a mistake with the class name argument

Example #1 - a simple class name

java ListUser

When the class is declared in a package such as com.acme.example, then you must use the full class name including the package name in the java command; e.g.

java com.java.w3schools.ListUser

Example #2 - a filename or pathname rather than a class name

java ListUser.class
java com/java/example/ListUser.class

Example #3 - a class name with the case type incorrect

java com.java.w3schools.listuser

Example #4 - a typo

java com.java.w3schools.mistuser

Example #5 - a source filename

java ListUser.java

Example #6 - you forgot the class name entirely

java "jhon" "peter" -> lots of arguments

4.2 The application's classpath is incorrectly specified

The second likely cause is that the class name is correct, but that the java command cannot find the class. To understand this, you need to understand the concept of the "classpath". This is explained well by the Oracle documentation:

The java command documentation
Setting the Classpath.
The Java Tutorial - PATH and CLASSPATH

To give a concrete example, supposing that:

you want to run com.java.w3schools.Foon class,
the full file path is /usr/local/java/classes/com/java/w3schools/Foon.class
your current working directory is /usr/local/java/classes/com/java/w3schools/

# wrong, FQN is needed
java Foon

# wrong, there is no com/java/w3schools` folder in the current working directory
java com.java.w3schools.Foon

# wrong, similar to above
java -classpath . com.java.w3schools.Foon

# fine; relative classpath set
java -classpath ../../.. com.java.w3schools.Foon

# fine; absolute classpath set
java -classpath /usr/local/java/classes com.java.w3schools.Foon

4.3 Dependencies Missing from Classpath

The classpath needs to include all of the other (non-system) classes that your application depends on. (The system classes are located automatically, and you rarely need to concern yourself with this.) For the main class to load correctly, the JVM needs to find:

A) The class itself.
B) All classes and interfaces in the superclass hierarchy (e.g. see Java class is present in classpath but startup fails with Error: Could not find or load main class)
C) All classes and interfaces that are referred to by means of variable or variable declarations, or method call or field access expressions.

4.4 The class has been declared in the wrong package

It occasionally happens that someone puts a source code file into the wrong folder in their source code tree, or they leave out the package declaration. If you do this in an IDE, the IDE's compiler will tell you about this immediately. Similarly, if you use a decent Java build tool, the tool will run javac in a way that will detect the problem. However, if you build your Java code by hand, you can do it in such a way that the compiler doesn't notice the problem, and the resulting ".class" file is not in the place that you expect it to be.

5. Another Example to Java Newbie

If the compiled classes are in packages then we have to cd to the root directory of the project and run using the fully qualified name of the class (packageName.MainClassName).


My classes are in here:


The fully qualified name of my main class is:


So I cd back to the root project directory:


Then issue the java command:

java com.cse.Main

This answer is for rescuing newbie java programmers from the frustration caused by a common mistake, I recommend you read the accepted answer for more in-depth knowledge about the java classpath.

6. Conclusion

In this post, We have discussed a problem "Error: Could not find or load main class". Every Java programmer must have seen this when they are new to the java.

And seen the common error-prone areas for this problem and provided solutions.

Original Article



About Us

Author: Venkatesh - I love to learn and share the technical stuff.

accumulo,1,ActiveMQ,2,Adsense,1,API,31,ArrayList,16,Arrays,2,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,4,Collections,20,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,5,Core Java,73,Corona India,1,Create,2,CSS,1,Date,2,Date Time API,3,Dictionary,1,Difference,1,Download,1,Eclipse,2,Efficiently,1,Error,1,Errors,1,Exception,1,Exceptions,3,Fast,1,Files,9,Float,1,Font,1,For examples,1,For loop examples,1,For Loop in Java,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,4,Grant,1,Grep,1,HashMap,1,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Inner for loops,1,Installation,1,Interview Questions,5,Iterate,2,Jackson API,3,Java,28,Java 10,1,Java 11,5,Java 12,5,Java 13,2,Java 14,2,java 5 For loop,1,Java 8,48,Java 9,1,Java Design Patterns,1,Java Files,1,Java for loop,1,Java Program,2,Java Programs,65,java.lang,5,java.util. function,1,jQuery,1,Kotlin,10,Kotlin Programs,6,Lambda,1,lang,29,Leap Year,1,live updates,1,Mac OS,2,Math,1,Maven,1,Method References,1,Mockito,1,MongoDB,3,Nested for loop,1,Nested for loop examples,1,New Features,1,Operations,1,Optional,4,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Stream,3,Streams,11,String,48,String Programs,8,String Revese,1,Swing,1,System,1,Tags,1,Threads,8,Tomcat,1,Tomcat 8,1,Troubleshoot,16,Unix,2,Updates,3,util,5,While Loop,1,
JavaProgramTo.com: [Fixed] Error: Could not find or load main class
[Fixed] Error: Could not find or load main class
Java Guide to Fix the Error "Could not find or load main class".
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content