Fix: Hauptklasse konnte nicht gefunden oder geladen werden



Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen

Der Fehler ' Hauptklasse konnte nicht gefunden oder geladen werden ’Tritt auf, wenn ein Java-Befehl in der Eingabeaufforderung zum Starten eines Java-Programms verwendet wird, indem der Klassenname im Terminal angegeben wird. Der Grund dafür ist hauptsächlich der Programmierfehler des Benutzers beim Deklarieren der Klasse.



Hauptklasse in Java-Befehlszeile konnte nicht gefunden oder geladen werden

Die Java-Befehlszeile der 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 Java-Syntax?

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 [...] [...]

Hier ist eine Befehlszeilenoption, ein vollständig qualifizierter Java-Klassenname und ein Befehlszeilenargument, das beim Kompilieren des gesamten Pakets an Ihre Anwendung übergeben wird.

Ein Beispiel für einen gültigen Befehl ist:

java -Xmx100m com.acme.example.ListAppuals Kevin Pfeile Bart

Mit dem obigen Befehl führt der Java-Befehl die folgenden Operationen aus:

  • Es wird nach einer kompilierten Version der Klasse „ com.acme.example.ListAppuals '.
  • Nach der Suche wird die Klasse geladen.
  • Als nächstes wird beim Laden der Klasse nach einer Hauptmethode mit einer gültigen Signatur, Modifikatoren und einem gültigen Rückgabetyp gesucht. Eine Beispielhauptklasse wäre so etwas wie:
public static void main (String [])
  • Die Methode wird mit den Argumenten 'kevin', 'pfeile' und 'bart' als string [] 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, ist, dass sie einen falschen Klassennamen als Argument angeben (oder dass 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
  • Sie sollte nicht erklären zu 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 bei der Deklaration 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:> setze CLASSPATH = classpath1; classpath2 ...

Um mehr über den Klassenpfad zu erfahren, sollten Sie die folgenden Dokumente lesen.

Java-Befehlsdokumentation

Klassenpfad festlegen

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:

# falsch, FQN wird benötigt Java Appuals # falsch, es gibt keinen Ordner 'com / acme / example' im aktuellen Arbeitsverzeichnis java com.acme.example.Appuals # falsch, ähnlich wie im obigen Szenario java -classpath. com.acme.example.Appuals # OK; ein relativer Klassenpfad wird gesetzt java -classpath ../../ .. com.acme.example.Appuals # OK; Ein absoluter Klassenpfad ist 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.

4 Minuten gelesen