Beheben den Fehler Could Not Find or Load Main Class in Java
- Fehler konnte nicht gefunden werden, da in Java der falsche Name übergeben wurde
- Fehler konnte aufgrund eines falschen Paketnamens in Java nicht gefunden werden
- Fehler aufgrund eines falschen CLASSPATH in Java konnte nicht gefunden werden
In diesem Tutorial wird der Fehler Could not find or load main class
in Java vorgestellt.
Angenommen, wir haben einen Code geschrieben und kompiliert. Bis jetzt funktioniert alles einwandfrei, aber als wir es endlich ausgeführt haben, ist ein Fehler aufgetaucht.
could not find or load main class
In diesem Tutorial wird erläutert, warum dieser Fehler auftritt und wie er behoben werden kann. Lassen Sie uns zunächst zusammenfassen, wie wir ein Java-Programm über die Eingabeaufforderung ausführen.
Zuerst kompilieren wir den Code mit dem javac-Befehl wie unten:
javac<.java file name>
Nach dem Ausführen des obigen Befehls wird eine Datei mit der Erweiterung .class
im aktuellen Ordner erstellt.
Die .class
-Datei hat dieselbe Klasse wie das .java
-Programm. Wir führen dann die .class
-Datei mit dem folgenden Befehl aus, um den Java-Code auszuführen:
java<classname>
Möglicherweise erhalten wir den Fehler could not find or load main class
. Dieser Fehler ist ein Laufzeitfehler und tritt auf, wenn die Java Virtual Machine die Hauptklasse (Klasse, die die Hauptmethode enthält), die wir auszuführen versuchen, nicht finden kann.
Dieser Fehler tritt am häufigsten auf, wenn unsere Java-Programme über die Eingabeaufforderung ausgeführt werden. Bevor wir auf die Ursachen dieses Fehlers eingehen, wollen wir zunächst CLASSPATH verstehen.
CLASSPATH in Java
Dies ist die executable.class
und andere Ressourcendateien.
Die JVM verwendet sie, um die Dateien zu lokalisieren. Der Standard-CLASSPATH ist das aktuelle Verzeichnis, es sei denn, wir setzen den CLASSPATH explizit in den Systemvariablen.
Um ein Programm auszuführen, müssen wir den Klassennamen übergeben. Wir nehmen das folgende Beispiel, um den Punkt zu veranschaulichen:
public class DelftStack {
public static void main(String args[]) {
System.out.println("Hello from DelftStack");
}
}
Lassen Sie uns es zuerst mit dem Befehl javac kompilieren:
C :\Users\User\Documents\DelftStack\java
> javac DelftStack.java C :\Users\USer\Documents\DelftStack\java
>
Nach der Ausführung des obigen Befehls wird eine Datei DelftStack.class
in unserem aktuellen Verzeichnis erstellt. Lassen Sie uns diese Datei mit dem Java-Befehl ausführen.
C :\Users\User\Documents\DelftStack\java
> java DelftStack.class Error : Could not find or load main class DelftStack.
class Caused by : java.lang.ClassNotFoundException : DelftStack.class
Hier erhalten wir eine Fehlermeldung, weil wir versuchen, die Datei .class
auszuführen. Stattdessen müssen wir nur den Klassennamen übergeben.
Schauen Sie unten:
C :\Users\User\Documents\DelftStack\java > java DelftStack Hello from DelftStack
Fehler konnte nicht gefunden werden, da in Java der falsche Name übergeben wurde
Der Fehler could not find or load the main class
kann auch auftreten, wenn wir den falschen Klassennamen übergeben. Wenn wir das vorherige Beispiel fortsetzen und versuchen, das Programm mit dem falschen Namen wie folgt auszuführen:
C :\Users\User\Documents\DelftStack\java > java DelftStac Error
: Could not find or load main class DelftStac Caused by : java.lang.ClassNotFoundException
: DelftStac
Wir erhalten den obigen Fehler, weil wir den Klassennamen falsch geschrieben haben. Hier versucht die JVM, eine Klasse namens DelftStac
auszuführen, die nicht existiert.
Wir können dieses Problem lösen, indem wir den Klassennamen wie folgt richtig schreiben:
C :\Users\User\Documents\DelftStack\java > java DelftStack Hello from DelftStack
Beachten Sie auch hier, dass beim Klassennamen zwischen Groß- und Kleinschreibung unterschieden wird. Wenn wir die Klasse Delftstack
ausführen, erhalten wir eine Fehlermeldung.
Schauen Sie unten:
C :\Users\User\Documents\DelftStack\java > java Delftstack Error
: Could not find or load main class Delftstack Caused by : java.lang.NoClassDefFoundError
: Delftstack(wrong name
: Delftstack)
Wir sollten die richtige Schreibweise und die richtigen Groß- und Kleinschreibung verwenden, um eine Datei erfolgreich auszuführen.
Fehler konnte aufgrund eines falschen Paketnamens in Java nicht gefunden werden
Lassen Sie uns unsere Klasse DelftStack
in das Paket com.DelftStack
verschieben. Ein Paket wird verwendet, um ähnliche Klassen zusammenzuhalten.
Sehen Sie sich den folgenden Code an:
package com.DelftStack;
public class DelftStack {
public static void main(String args[]) {
System.out.println("Hello from DelftStack");
}
}
Um ein Paket in Java zu kompilieren, verwenden wir den folgenden Befehl:
javac - d.<.java file name>
Der Flag-Schalter -d
wird verwendet, um anzugeben, wo die generierte Klassendatei gespeichert werden soll. Der .
bedeutet das aktuelle Verzeichnis.
Wir kompilieren den obigen Code wie folgt:
C :\Users\User\Documents\DelftStack\java > javac - d.DelftStack.java
Nach dem Ausführen des obigen Befehls wird die folgende Ordnerstruktur in unserem aktuellen Verzeichnis erstellt.
com\DelftStack\DelftStack.class
Wie wir sehen können, ist unsere Klassendatei zwei Ordner tief von unserem aktuellen Verzeichnis entfernt. Wenn wir also versuchen, unsere Klassendatei wie in den vorherigen Fällen auszuführen, erhalten wir einen Fehler.
C :\Users\User\Documents\DelftStack\java > java DelftStack Error
: Could not find or load main class DelftStack Caused by : java.lang.ClassNotFoundException
: DelftStack
Der Grund für diesen Fehler ist, dass in unserem aktuellen Ordner keine Klasse DelftStack
existiert. Um die in einem Paket vorhandene Klasse auszuführen, müssen wir ihren vollständig qualifizierten Namen übergeben (in diesem Fall com.DelftStack.DelftStack
).
C :\Users\User\Documents\DelftStack\java > java com.DelftStack.DelftStack Hello from DelftStack
Dies weist Java an, nach der Klasse im Ordner com\DelftStack
zu suchen.
Fehler aufgrund eines falschen CLASSPATH in Java konnte nicht gefunden werden
Der CLASSPATH teilt der JVM mit, wo die .class
-Dateien vorhanden sind.
Angenommen, wir befinden uns derzeit in einem anderen Ordner und möchten ein Java-Programm ausführen, dessen Klassendatei in einem anderen Ordner vorhanden ist. In diesem Fall können wir den Speicherort der Klassendatei mit der Option -classpath
übergeben.
Beispielsweise:
java - classpath XYZ / ABC < class name
>
Der obige Befehl weist Java an, nach der Datei .class
im Ordner ZYX/ABC
zu suchen.
Im vorherigen Fall haben wir ein Paket erstellt.
Angenommen, wir möchten die Datei im Ordner com/DelftStack
ausführen. Mit dem folgenden Befehl können wir dies tun:
> java - classpath../../ com.DelftStack.DelftStack Hello from DelftStack
Das ../
bedeutet das übergeordnete Verzeichnis. ../../
bedeutet also, zwei Verzeichnisebenen nachzuschlagen.
Nehmen wir ein weiteres Beispiel, nehmen wir an, wir befinden uns am Ort des Desktops (Ordners) und möchten eine Klassendatei an einer anderen Stelle auf dem Computer ausführen. Wir können dies unten tun.
> java - cp C :\Users\User\Documents\DelftStack\java com.DelftStack.DelftStack Hello from DelftStack
Das Flag -cp
ist die Abkürzung für -classpath
. Hier haben wir den vollständigen Speicherort des Ordners übergeben, in dem die Datei .class
vorhanden ist.
Verwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse