Java der Hauptklasse konnte nicht gefunden oder geladen werden? So beheben Sie es!

Java der Hauptklasse konnte nicht gefunden oder geladen werden? So beheben Sie es!

Wenn Sie in Ihrem Java-Projekt ohne ersichtlichen Grund immer wieder den Fehler main class not found erhalten, machen Sie sich keine Sorgen, Sie sind nicht allein.





Als einer der unvorhersehbarsten und spontansten Fehler, dank der Tendenz von JVM (Java Virtual Machine), sich an einen Standardklassenpfad zu halten, ist das Problem „Hauptklasse nicht gefunden“ etwas, das Amateure und Profis gleichermaßen verfolgt.





Aber dieses Thema ist tatsächlich weniger einschüchternd, als es zu sein scheint. Lesen Sie weiter, um herauszufinden, wie Sie diesen Fehler ein für alle Mal beseitigen können.





Warum wurde die Hauptklasse nicht gefunden?

Bevor wir versuchen zu verstehen, wie und warum JVM die Hauptklasse nicht finden konnte, müssen wir das Konzept von . verstehen Klassenpfad auf Java.

Was ist Klassenpfad?

Der Klassenpfad ist der Dateipfad, den die Java-Laufzeitumgebung nach Klassen und anderen Ressourcendateien durchsucht. Es kann entweder mit den -Klassenpfad Option beim Ausführen eines Programms oder durch Einstellen des Systems KLASSPATH Umgebungsvariable.



Wie der Name schon sagt, ist es einfach ein Dateipfad, in dem die .Klasse Dateien können in einem JDK-Paket oder -Verzeichnis gefunden werden.

Wenn die JVM die Hauptklasse nicht finden kann, liegt dies häufig daran, dass sie nach der entsprechenden . sucht .Klasse Dateien im falschen Klassenpfad. Natürlich können Sie dieses Problem beheben, indem Sie den Klassenpfad manuell angeben, indem Sie entweder Pakete verwenden oder den Klassenpfad angeben.





Wenn Sie an dieser Stelle Ihr Gedächtnis an Java-Klassen auffrischen möchten, lesen Sie unseren Leitfaden für Erstellen von Klassen in Java .

Lädt Ihr Telefon im Energiesparmodus schneller?

Pakete verwenden

Erstellen wir eine Klasse namens Prüfen . Legen Sie es in ein Paket namens Testpaket . Pakete werden in Java verwendet, um ähnliche Klassen zu gruppieren oder um einen eindeutigen Namensraum für Klassen bereitzustellen.





In diesem einfachen Beispiel hilft Ihnen die Verwendung eines Pakets, sich vorzustellen, wie der Klassenpfad von Java funktioniert. In Ihrer Dateimanageranwendung wird ein Paket als unabhängiger Ordner dargestellt.

package testPackage;
public class Test {
public static void main(String args[]) {
System.out.println('File successfully found!');
}
}

Öffnen Sie nun ein neues Terminal und stellen Sie sicher, dass Ihr Arbeitsverzeichnis mit dem übereinstimmt, das den Paketordner enthält. Sie können das Arbeitsverzeichnis ändern, indem Sie die CD Befehl auf jedem Betriebssystem.

Kompilieren Test.java indem Sie den folgenden Befehl ausführen:

package testPackage;
javac testPackage/Test.java

Dadurch wird die kompilierte Binärdatei (die .class-Datei) in testPackage gespeichert.

Um die kompilierte Klasse auszuführen, müssen Sie den vollständig qualifizierten Klassennamen in die Befehlszeile eingeben. Der vollqualifizierte Name einer Java-Klasse bezieht sich auf ihren Namen, dem ihr Paketname vorangestellt ist. In diesem Fall sollte das ungefähr so ​​aussehen:

java testPackage.Test

Diese Art des Aufrufens von Klassendateien stellt auch sicher, dass Sie ausführbare Dateien aus verschiedenen Paketen aus demselben Arbeitsverzeichnis aufrufen können. Sie müssen lediglich den vollqualifizierten Klassennamen ändern.

In fortgeschritteneren Implementierungen empfehlen wir Ihnen, separate Unterordner für Ihre Klassen und Quelldateien zu erstellen, um Dateien innerhalb des Pakets besser verwalten zu können.

Klassenpfad manuell angeben

Die empfohlene Methode zum Verwalten Ihrer Java-Dateien besteht darin, separate Verzeichnisse für Quelldateien und Klassen zu erstellen. Wenn Sie an einem Projekt arbeiten, ist es wahrscheinlich, dass Sie dies bereits tun.

Herkömmlicherweise wird das Verzeichnis mit den Quelldateien als src und der mit .class-Dateien ist gekennzeichnet als Klassen. Dadurch wird auch sichergestellt, dass die Wahrscheinlichkeit, dass JVM die Hauptklasse nicht findet, aufgrund des richtig strukturierten Verzeichnisses erheblich reduziert wird.

Wenn wir diese Methode verwenden, sieht die Verzeichnisstruktur vor dem Kompilieren so aus:

Beste Anti-Diebstahl-App für Android
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Jeder Einzug in der obigen Abbildung entspricht einer Ebene der Dateihierarchie, der Ihr Projekt folgen sollte.

Um dies zu kompilieren, stellen Sie sicher, dass Ihr Arbeitsverzeichnis myFolder ist. Geben Sie nun den folgenden Befehl ein:

javac -d classes src/testPackage/Test.java

Die .Klasse ausführbare Datei sollte gespeichert werden in myFolder/classes/testPackage . Dementsprechend sieht die Dateiverzeichnisstruktur etwa so aus:|_+_|

Um die auszuführen .Klasse -Datei, führen Sie den Java-Befehl mit dem vollständig qualifizierten Klassennamen aus und geben Sie den lokalen Klassenpfad an. Jeder Pfad wird relativ zum Arbeitsverzeichnis deklariert, in diesem Fall myFolder.

|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
| |---testPackage
| |---Test.class

Wenn Sie diesen Befehl ausführen, sollten Sie die gewünschte Ausgabe erhalten. Aber warum ist so viel Reorganisation notwendig, um einen einfachen Fehler zu beheben?

Die Bedeutung der Organisation von Dateien in Java

Der eigentliche Grund, warum die 'Hauptklasse konnte nicht gefunden oder geladen werden' ausgelöst wird, ist, dass JVM nicht finden konnte, wo Ihre .Klasse Dateien gespeichert wurden.

Der einfachste Weg, diesen Fehler zu beheben, besteht darin, zu kontrollieren, wo die .class-Dateien gespeichert sind, und JVM explizit anzuweisen, dort nachzusehen. Dies wird ermöglicht, indem Sie Ihre Quelldateien und ausführbaren Dateien separat organisieren und alles von einem Arbeitsverzeichnis aus steuern.

Wenn Sie beginnen, Konstrukte hinzuzufügen, wie z Nachlass zu Ihrem Projekt wird die Komplexität des Dateisystems um ein Vielfaches zunehmen. In solchen Projekten oder sogar solchen, in denen die Verwendung von JAR-Dateien oder benutzerdefinierten Bibliotheken erforderlich ist, kann Ihnen die einfache Methode der Trennung und Verwaltung von Dateien unzählige Stunden der Fehlerbehebung und des Debuggens ersparen.

Um mehr über die Funktionsweise von Classpath in Java und die zahlreichen Dinge zu erfahren, die Sie bei der Ausführung Ihres Codes steuern können, können Sie auch einen Blick auf Oracle ausführliche und benutzerfreundliche Referenz .

Teilen Teilen Tweet Email Die 10 besten Anfängerprojekte für neue Programmierer

Sie möchten Programmieren lernen, wissen aber nicht, wo Sie anfangen sollen? Diese Programmierprojekte und Tutorials für Anfänger werden Sie durchstarten.

soll ich mir einen neuen laptop zulegen
Weiter lesen Verwandte Themen
  • Programmierung
  • Java
Über den Autor Yash Chellani(10 Artikel veröffentlicht)

Yash ist ein aufstrebender Informatikstudent, der es liebt, Dinge zu bauen und über alles, was mit Technik zu tun hat, zu schreiben. In seiner Freizeit spielt er gerne Squash, liest eine Ausgabe des neuesten Murakami und jagt Drachen in Skyrim.

Mehr von Yash Chellani

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren