Updated April 12, 2023
Introduction to Java ClassNotFoundException
As it goes by the name, ClassNotFoundException occurs in Java when a specific class is tried to load by a Java Virtual Machine(JVM). The requested class is not found in the path of the class specified by you, meaning that the path of the class specified by you is broken, which problem is really common in the world of Java. Hence, ClassNotFoundException is also common in Java. This problem is very confusing for those who are beginners in Java, and ClassNotFoundException must be catch or thrown to the caller ClassNotFoundException is a checked exception.
The syntax ofClassNotFoundException in Java is as follows:
java.lang.ClassNotFoundException:Class_name at location
Working of ClassNotFoundException in Java
- When a class loader is not able to find the class in the path of the class specified while the application is trying to load the class, that is when the ClassNotFoundExceptionoccurs in Java.
- Making use of Class.forName and ClassLoader.loadClass for loading the class while passing string name of the class as the parameter which is not found in the path of the class that is specified is one of the common causes for java.lang.ClassNotFoundException in Java.
- ClassNotFoundException in Java must be catch or thrown to the caller because it is a checked exception.
- The class is indirectly loading using the Classloader. As a result, ClassNotFoundException in Java occurs at runtime. There is no way that a Java compiler can know if a class is present in the path of the class specified or not at runtime.
- Trying to load the JDBC drivers using Class.forName and not adding the jar file in the path of the class is one of the common examples of ClassNotFoundExceptionin Java.
- Consider the below program to demonstrate ClassNotFoundException in Java:
//a class called program is defined
public class Program
{
//main method is called
public static void main(String args[])
{
//class not found exception is defined using try and catch block
try
{
// the forname method in class class looks for the mentioned class
Class.forName("The Class do not Exist");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
}
The output of the above program is as shown in the snapshot below:
In the above program, a class called Program is defined. Then the main method is called. Then class not found exception is defined using try and catch block. There is noThe class does not exist.java class which the class loader is trying to find andtheforname method in class looks for the mentioned class, which it fails to find; hence the ClassNotFoundException is thrown. The output of the program is as shown in the snapshot above.
Constructors
There are several constructors for ClassNotFoundException in Java. They are:
- ClassNotFoundException(): A new ClassNotFoundException is constructed which includes the current trace of the stack.
- ClassNotFoundException(String): A new ClassNotFoundException is constructed, which includes the current trace of the stack and the message in detail, specified.
- ClassNotFoundException(IntPtr, JniHandleOwnership): During the creation of JNI objects, while managing their representations, this constructor is used, and the runtime calls it.
- ClassNotFoundException(String, Throwable): A new ClassNotFoundException is constructed, which includes the current trace of the stack along with the message in detail that is specified and the exception that occurs when trying to load the class.
Examples of Java ClassNotFoundException
Here are the following examples mention below:
Example #1
Java program to demonstrate ClassNotFoundException:
Code:
//a class called exceptiondemo is defined
public class Exceptiondemo
{
//a string variable is defined
private static final String DRIVE_CLASS = "com.mysql.jdbc.Driver";
//main method is called including the exception
public static void main(String[] args) throws Exception
{
System.out.println("MySQL JDBC driver loading attempt");
//the forname method in class class looks for the mentioned class
Class.forName(DRIVE_CLASS);
}
}
The output of the above program is as shown in the snapshot below:
In the above program, a class called Exception demo is defined. Then the main method is called. Then a string variable is defined to which the JDBC driver path is assigned. Then the main method is called, which throws the exception. The class loader is trying to find the JDBC driver path of the class specified and the forname method in class looks for the mentioned class, which it fails to find; hence the ClassNotFoundException is thrown. The output of the program is as shown in the snapshot above.
Example #2
Java program to demonstrate ClassNotFoundException(String)
Code:
//a class called check is defined
public class Check
{
//main method is called
public static void main(String args[])
{
//class not found exception is defined using try catch block
try
{
//the forname method in class class looks for the mentioned class
Class.forName("Demonstrating class not found exception");
}
catch(ClassNotFoundException e)
{
//the string specified along with the class not found exception is displayed.
System.out.println("There is no class as specified in the path " + e);
}
}
}
The output of the above program is as shown in the snapshot below:
In the above program, a class called check is defined. Then the main method is called. Then the main method is called. Then class not found exception is defined by using try and catch block. Then the forename method in class looks for the mentioned class, which it fails to find; hence the ClassNotFoundException is thrown and the string specified as a detailed message along with the class not found exception is displayed. The output of the program is as shown in the snapshot above.
How to Avoid ClassNotFoundException?
Steps to avoid ClassNotFoundException:
- The file of the class causing the problem on which the jar file is present must be found out.
- We should check if the path of the class or classpath consists of that jar. If the jar is not present in the classpath or path of the class, the class must be added in the class or classpath path.
- If the class is present in the class or classpath path, then the chances are that there is an overriding of classpath or path of the class or the path specified in the jar file or the script used for starting up is being used by the application. To solve this problem, we need to find the exact path of the class that is being used by the application.
Conclusion
In this tutorial, we understand the concept of Class Not Found Exception in Java through definition, the syntax of Class Not Found Exception in Java, working of Class Not Found Exception in Java, and their constructors through examples and their outputs.
Recommended Articles
This is a guide to Java ClassNotFoundException. Here we discuss the working of ClassNotFoundException in Java along with programming examples. You may also have a look at the following articles to learn more –