Fix: Hauptklasse konnte nicht gefunden oder geladen werden

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

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. Der Java - Befehl war nicht in der Lage zu lokalisieren , die Klasse in dem richtigen Verzeichnis.

In einigen Fällen müssen Sie den richtigen Dateipfad hinzufügen und das Java-Terminal auf den richtigen Speicherort verweisen. 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 uns zunächst die Syntax des Befehls ansehen. 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 ' gesucht .
  • 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 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 eines einfachen Klassennamens . Wenn Sie die Klasse in einem Paket wie 'com.acme.example' deklarieren, müssen Sie den vollständigen Klassennamen einschließlich des Pakets im Java-Befehl verwenden.
java com.acme.example.ListAppuals

anstatt

Java ListAppuals
  • Sie sollten einen Klassennamen deklarieren, anstatt einen Dateinamen oder Pfadnamen zu deklarieren. Java ruft die Klasse nicht ab, wenn Sie einen Pfad- / Dateinamen dafür deklarieren. Zu den falschen Einträgen gehören:
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 sollten keinen Quelldateinamen deklarieren . 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 einen Tippfehler machen oder vergessen, 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. Befindet sich beispielsweise "/ usr / local / acme / classes" im Klassenpfad, 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 Ihr Unterverzeichnis überprüfen und prüfen, 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
  • Der vollständige Dateipfad lautet: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Das aktuelle Arbeitsverzeichnis lautet: / 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 Paket korrekt deklariert . 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.

Empfohlen

Fix: Minecraft reagiert nicht
Was ist eine Registrierungsanwendung für ein digitales TV-Tunergerät und sollte diese entfernt werden?
Was ist FileRepMalware und sollten Sie es entfernen?