Heim  >  Artikel  >  Java  >  Java ClassNotFoundException

Java ClassNotFoundException

WBOY
WBOYOriginal
2024-08-30 16:14:44793Durchsuche

Wie der Name schon sagt, tritt ClassNotFoundException in Java auf, wenn versucht wird, eine bestimmte Klasse von einer Java Virtual Machine (JVM) zu laden. Die angeforderte Klasse wird nicht im Pfad der von Ihnen angegebenen Klasse gefunden, was bedeutet, dass der Pfad der von Ihnen angegebenen Klasse fehlerhaft ist, ein Problem, das in der Java-Welt sehr häufig auftritt. Daher kommt ClassNotFoundException auch in Java häufig vor. Dieses Problem ist für Java-Anfänger sehr verwirrend, und ClassNotFoundException muss abgefangen oder an den Aufrufer geworfen werden. ClassNotFoundException ist eine geprüfte Ausnahme.

WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Die Syntax von ClassNotFoundException in Java lautet wie folgt: 

java.lang.ClassNotFoundException:Class_name at location

Funktionsweise von ClassNotFoundException in Java

  • Wenn ein Klassenlader die Klasse im Pfad der angegebenen Klasse nicht finden kann, während die Anwendung versucht, die Klasse zu laden, tritt in Java die ClassNotFoundException auf.
  • Die Verwendung von Class.forName und ClassLoader.loadClass zum Laden der Klasse bei gleichzeitiger Übergabe des Zeichenfolgennamens der Klasse als Parameter, der nicht im Pfad der angegebenen Klasse gefunden wird, ist eine der häufigsten Ursachen für java.lang .ClassNotFoundException in Java.
  • ClassNotFoundException in Java muss abgefangen oder an den Aufrufer geworfen werden, da es sich um eine geprüfte Ausnahme handelt.
  • Die Klasse wird indirekt über den Classloader geladen. Infolgedessen tritt ClassNotFoundException in Java zur Laufzeit auf. Es gibt keine Möglichkeit, dass ein Java-Compiler zur Laufzeit erkennen kann, ob eine Klasse im Pfad der angegebenen Klasse vorhanden ist oder nicht.
  • Der Versuch, die JDBC-Treiber mit Class.forName zu laden und die JAR-Datei nicht im Pfad der Klasse hinzuzufügen, ist eines der häufigsten Beispiele für ClassNotFoundException in Java.
  • Betrachten Sie das folgende Programm, um ClassNotFoundException in Java zu demonstrieren:
//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();
}
}
}

Die Ausgabe des obigen Programms ist wie im Schnappschuss unten dargestellt:

Java ClassNotFoundException

Im obigen Programm ist eine Klasse namens Program definiert. Dann wird die Hauptmethode aufgerufen. Dann wird die Ausnahme „Klasse nicht gefunden“ mithilfe des Try- und Catch-Blocks definiert. Es gibt keine „Die Klasse existiert nicht“. Java-Klasse, die der Klassenlader zu finden versucht, und die Methode „forname“ in der Klasse sucht nach der genannten Klasse, die sie jedoch nicht finden kann; Daher wird die ClassNotFoundException ausgelöst. Die Ausgabe des Programms ist wie im Schnappschuss oben dargestellt.

Konstrukteure

Es gibt mehrere Konstruktoren für ClassNotFoundException in Java. Sie sind:

  • ClassNotFoundException(): Eine neue ClassNotFoundException wird erstellt, die den aktuellen Trace des Stapels enthält.
  • ClassNotFoundException(String): Eine neue ClassNotFoundException wird erstellt, die den aktuellen Trace des Stacks und die Nachricht im Detail enthält, spezifiziert.
  • ClassNotFoundException(IntPtr, JniHandleOwnership): Während der Erstellung von JNI-Objekten und der Verwaltung ihrer Darstellungen wird dieser Konstruktor verwendet und von der Laufzeit aufgerufen.
  • ClassNotFoundException(String, Throwable): Eine neue ClassNotFoundException wird erstellt, die den aktuellen Trace des Stapels zusammen mit der angegebenen Nachricht im Detail und der Ausnahme enthält, die beim Versuch, die Klasse zu laden, auftritt .

Beispiele für Java ClassNotFoundException

Hier sind die folgenden Beispiele:

Beispiel #1

Java-Programm zur Demonstration der 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);
}
}

Die Ausgabe des obigen Programms ist wie im Schnappschuss unten dargestellt:

Java ClassNotFoundException

Im obigen Programm ist eine Klasse namens Exception demo definiert. Dann wird die Hauptmethode aufgerufen. Anschließend wird eine String-Variable definiert, der der JDBC-Treiberpfad zugewiesen wird. Anschließend wird die Methode main aufgerufen, die die Ausnahme auslöst. Der Klassenlader versucht, den JDBC-Treiberpfad der angegebenen Klasse zu finden, und die forname-Methode in der Klasse sucht nach der genannten Klasse, kann sie aber nicht finden. Daher wird die ClassNotFoundException ausgelöst. Die Ausgabe des Programms ist wie im Schnappschuss oben dargestellt.

Beispiel #2

Java-Programm zur Demonstration von 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);
}
}
}

Die Ausgabe des obigen Programms ist wie im Schnappschuss unten dargestellt:

Java ClassNotFoundException

Im obigen Programm ist eine Klasse namens check definiert. Dann wird die Hauptmethode aufgerufen. Dann wird die Hauptmethode aufgerufen. Dann wird die Ausnahme „Klasse nicht gefunden“ mithilfe des Try- und Catch-Blocks definiert.  Dann sucht die forename-Methode in der Klasse nach der genannten Klasse, kann sie aber nicht finden; Daher wird die ClassNotFoundException ausgelöst und die als detaillierte Meldung angegebene Zeichenfolge zusammen mit der Ausnahme „Klasse nicht gefunden“ angezeigt. Die Ausgabe des Programms ist wie im Schnappschuss oben dargestellt.

Wie vermeide ich ClassNotFoundException?

Schritte zur Vermeidung von ClassNotFoundException:

  • Die Datei der Klasse, die das Problem verursacht, in der die JAR-Datei vorhanden ist, muss ermittelt werden.
  • Wir sollten prüfen, ob der Pfad der Klasse oder der Klassenpfad aus diesem JAR besteht. Wenn das JAR nicht im Klassenpfad oder Pfad der Klasse vorhanden ist, muss die Klasse im Klassen- oder Klassenpfadpfad hinzugefügt werden.
  • Wenn die Klasse im Klassen- oder Klassenpfadpfad vorhanden ist, besteht die Möglichkeit, dass der Klassenpfad oder der Klassenpfad überschrieben wird oder der in der JAR-Datei angegebene Pfad oder das zum Starten verwendete Skript von verwendet wird die Anwendung. Um dieses Problem zu lösen, müssen wir den genauen Pfad der Klasse finden, die von der Anwendung verwendet wird.

Fazit

In diesem Tutorial verstehen wir das Konzept der „Class Not Found Exception“ in Java durch Definition, die Syntax der „Class Not Found Exception“ in Java, die Funktionsweise der „Class Not Found Exception“ in Java und ihre Konstruktoren anhand von Beispielen und deren Ausgaben.

Das obige ist der detaillierte Inhalt vonJava ClassNotFoundException. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn