Fix: Hauptklasse konnte nicht gefunden oder geladen werden
Wie bereits erwähnt, hängt dieser Fehler meistens nicht mit dem System zusammen, und der Benutzer macht in mehreren Szenarien einen Fehler, wie unten gezeigt. Bevor Sie fortfahren, gehen wir davon aus, dass Sie über Grundkenntnisse der Programmiersprache Java und deren Funktionsweise verfügen.
Was verursacht den Fehler ‘Hauptklasse konnte nicht gefunden oder geladen werden’ in Java?
Die Meldung ‘Hauptklasse konnte nicht gefunden oder geladen werden’ bedeutet, dass der erste Schritt der Java-Engine, die die Klasse zur Ausführung abruft, fehlgeschlagen ist. Das Java-Befehl konnte nicht Lokalisieren die Klasse im richtigen Verzeichnis.
In einigen Fällen müssen Sie die hinzufügen korrekter Dateipfad und zeigen Sie mit dem Java-Terminal auf den richtigen Speicherort. Da Sie den Befehl über das Befehlszeilenterminal ausführen, weiß der Computer nicht, wo sich die Klasse befindet oder wo sie sich befindet. In Ziel-IDEs ist dies nicht das Problem, da die IDE einen Zeiger auf das aktuelle Arbeitsverzeichnis zeigt.
Was ist die Syntax ‘Java ‘?
Bevor wir mit der Fehlerbehebung beginnen, warum das Terminal beim Ausführen einen Fehler zurückgibt, müssen wir zunächst die Syntax des Befehls überprüfen. Wenn Sie nicht die richtige Syntax verwenden, tritt dieser Fehler unweigerlich auf.
Die normale Syntax des Befehls lautet ungefähr so:
java [ <option> ... ] <class-name> [<argument> ...]
Hier ist
Ein Beispiel für einen gültigen Befehl ist:
java -Xmx100m com.acme.example.ListAppuals kevin arrows bart
Mit dem obigen Befehl führt der Java-Befehl die folgenden Operationen aus:
- Es wird nach einer kompilierten Version der Klasse gesucht. ‘com.acme.example.ListAppuals‘.
- Nach der Suche wird die Klasse geladen.
- Wenn die Klasse geladen wird, wird die Klasse nach einer ‘Haupt’-Methode mit einer gültigen Signatur, Modifikatoren und einem gültigen Rückgabetyp durchsucht. Eine Beispielhauptklasse wäre so etwas wie:
public static void main(String[])
- Die Methode wird mit den Argumenten ‘kevin’, ‘arrows’ und ‘bart’ als Zeichenfolge aufgerufen[].
So beheben Sie ‘Hauptklasse konnte nicht gefunden oder geladen werden’
Lösung 1: Überprüfen des Klassennamenarguments
Der häufigste Fehler, den Benutzer machen, besteht darin, dass sie einen falschen Klassennamen als Argument angeben (oder ein korrekter Klassenname eine falsche Form ist). Da wir Parameter in der Befehlszeile deklarieren, ist es sehr wahrscheinlich, dass Sie das Klassennamenargument in einer falschen Form übergeben. Hier werden alle möglichen Szenarien aufgelistet, in denen Sie einen Fehler machen können.
- Schreiben ein einfacher Klassenname. Wenn Sie die Klasse in einem Paket wie ‘com.acme.example’ deklarieren, müssen Sie das verwenden vollständiger Klassenname Einfügen des Pakets in den Java-Befehl.
java com.acme.example.ListAppuals
Anstatt von
java ListAppuals
- Du solltest Deklarieren Sie einen Klassennamen anstatt einen Dateinamen oder Pfadnamen zu deklarieren. Java ruft die Klasse nicht ab, wenn Sie einen Pfad- / Dateinamen dafür deklarieren. Falsch Einträge umfassen Folgendes:
java ListAppuals.class java com/acme/example/ListAppuals.class
- Gehäuse sollte berücksichtigt werden. Bei Java-Befehlen wird zwischen Groß- und Kleinschreibung unterschieden. Wenn Sie einen Fehler mit nur einem Buchstaben machen, können Sie die Hauptklasse nicht laden. Ein Beispiel für falsche Fehler sind:
java com.acme.example.listappuals
- Du sollte nicht deklarieren a Quelldateiname. Wie bereits erwähnt, müssen Sie die Klasse nur im richtigen vollständigen Klassennamenformat deklarieren. Ein Beispiel für einen Fehler ist:
java ListAppuals.java
- Dieser Fehler tritt auch auf, wenn Sie a Tippfehler oder Vergessen Sie, den Klassennamen vollständig zu schreiben.
Wenn Sie beim Deklarieren des Klassennamens schlampige Fehler gemacht haben, stellen Sie sicher, dass Sie diese beheben, und starten Sie das Programm.
Lösung 2: Überprüfen des Klassenpfads
Wenn Sie den Klassennamen korrekt deklariert haben, der Fehler jedoch weiterhin angezeigt wird, konnte der Java-Befehl den angegebenen Klassennamen möglicherweise nicht im Pfad finden. Der Klassenpfad ist ein Pfad, in dem die Java-Laufzeit nach Ressourcen- und Klassendateien sucht. Sie können den Klassenpfad einfach mit zwei verschiedenen Befehlen festlegen, wie unten gezeigt:
C:> sdkTool -classpath classpath1;classpath2... C:> set CLASSPATH=classpath1;classpath2...
Um mehr über den Klassenpfad zu erfahren, sollten Sie die folgenden Dokumente lesen.
Lösung 3: Verzeichnis überprüfen
Wenn Sie ein Verzeichnis als Klassenpfad deklarieren, entspricht es immer dem Stamm des Namespace. Wenn sich beispielsweise “/ usr / local / acme / classes” im Klassenpfad befindet, sucht Java nach einer Klasse “com.acme.example.Appuals”. Es wird nach einer Klasse mit dem folgenden Pfadnamen gesucht:
/usr/local/acme/classes/com/acme/example/Appuals.class
Wenn Sie also die folgende Adresse in den Klassenpfad einfügen, kann Java die Klasse im Wesentlichen nicht finden:
/usr/local/acme/classes/com/acme/example
Sie sollten auch Ihre überprüfen Unterverzeichnis und prüfen Sie, ob es mit dem FQN übereinstimmt. Wenn Ihr Klassen-FQN “com.acme.example.Appuals” lautet, sucht Java im Verzeichnis “com / acme / example” nach einer “Appuals.class”.
Nehmen wir als Beispiel das folgende Szenario an:
- Die Klasse, die Sie ausführen möchten, lautet: com.acme.example.Appuals
- Das vollständiger Dateipfad ist: /usr/local/acme/classes/com/acme/example/Appuals.class
- Das aktuelles Arbeitsverzeichnis ist: / usr / local / acme / classes / com / acme / example /
Dann würden die folgenden Szenarien gelten:
# wrong, FQN is needed java Appuals # wrong, there is no `com/acme/example` folder in the current working directory java com.acme.example.Appuals # wrong, similar to above scenario java -classpath . com.acme.example.Appuals # OK ; a relative classpath is set java -classpath ../../.. com.acme.example.Appuals # OK; an absolute classpath is set java -classpath /usr/local/acme/classes com.acme.example.Appuals
Hinweis: Der Klassenpfad muss auch alle anderen Klassen (Nicht-System) enthalten, die Ihre Anwendungen benötigen.
Lösung 4: Überprüfen des Klassenpakets
Wenn alle oben genannten Lösungen in Ihrem Fall zutreffen, müssen Sie sicherstellen, dass Ihr Quellcode im richtigen Ordner abgelegt ist. Außerdem haben Sie das korrekt deklariert Paket. Wenn Sie Ihren Code mit einer IDE ausführen, werden Sie wahrscheinlich über das Problem informiert. In unserem Fall bleibt der Fehler jedoch unbemerkt, da wir ihn an der Eingabeaufforderung ausführen, und Sie erhalten den besprochenen Klassenfehler.