„Could not find or load main class“ in Java: Fehlerbehebung für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

„Could not find or load main class“: Der bekannte Schrecken jedes Java-Anfängers

\n\n

Du hast gerade angefangen, Java zu lernen, dein erstes HelloWorld.java geschrieben, mit klopfendem Herz die Eingabetaste im Terminal gedrückt … Und statt der erhofften Begrüßung siehst du diese kalte Meldung:

\n\n
Error: Could not find or load main class HelloWorld\nCaused by: java.lang.ClassNotFoundException: HelloWorld
\n\n

Kommt dir bekannt vor? Wenn ja – du bist nicht allein. Diese Frage auf Stack Overflow hat Millionen von Aufrufen und ist der absolute Rekordhalter unter den Fehlern bei Java-Anfängern. Die gute Nachricht: Die Ursache ist fast immer banal und die Lösung dauert 30 Sekunden. Die schlechte Nachricht: Wenn du nicht verstehst, warum es passiert ist, wird dich der Fehler immer wieder verfolgen.

\n\n

In diesem Artikel analysieren wir alle möglichen Ursachen für „Could not find or load main class“ anhand konkreter Beispiele. Du lernst nicht nur, den Fehler zu beheben, sondern auch zu verstehen, wie Java deine Klasse sucht. Los geht's!

\n\n

Kurz und knapp: Was will uns die JVM sagen?

\n\n

Wenn du java Klassenname eingibst, erhält die Java Virtual Machine (JVM) den Befehl: „Finde die Klasse mit diesem Namen und starte ihre main-Methode“. Wenn die JVM die entsprechende .class-Datei nicht findet oder darin keine korrekte main-Methode vorliegt, gerät sie in Panik und wirft diesen Fehler.

\n\n

Wichtig zu verstehen: Java arbeitet mit Bytecode (.class-Dateien), nicht mit Quellcode (.java). Du kompilierst zuerst .java mit dem Befehl javac in .class und startest dann die .class-Datei mit java. Wenn im zweiten Schritt etwas schiefgeht – erhältst du den berüchtigten Fehler.

\n\n

Szenario 1: Du hast vergessen, die Datei zu kompilieren

\n\n

Der häufigste Grund, besonders bei denen, die gerade erst das Terminal geöffnet haben. Du schreibst:

\n\n
java HelloWorld
\n\n

Hast aber vorher nicht ausgeführt:

\n\n
javac HelloWorld.java
\n\n

Ohne Kompilierung existiert die Datei HelloWorld.class einfach nicht. Die JVM versucht ehrlich, sie zu finden, aber ohne Erfolg – und gibt den Fehler aus.

\n\n

Wie überprüfen?

\n
    \n
  • Schau im aktuellen Ordner nach: Gibt es eine Datei HelloWorld.class?
  • \n
  • Wenn nur HelloWorld.java vorhanden ist – kompiliere sie.
  • \n
  • Wenn keines von beiden da ist – überprüfe, ob du im richtigen Verzeichnis bist.
  • \n
\n\n

Szenario 2: Tippfehler im Klassennamen (Groß-/Kleinschreibung ist entscheidend!)

\n\n

Java ist eine streng typisierte Sprache und achtet auf Groß- und Kleinschreibung. Wenn deine Klasse HelloWorld heißt, du aber schreibst:

\n\n
java helloworld\njava HelloWorld.class\njava HelloWorld.java
\n\n

– wird die JVM dich nicht verstehen. Der Klassenname muss buchstabengetreu mit dem Dateinamen übereinstimmen. Ja, HelloWorld und helloworld sind für die JVM zwei verschiedene Namen.

\n\n
\n 🔥 Lifehack: Füge niemals .class oder .java an den Befehl java an. Verwende nur den reinen Klassennamen!\n
\n\n

Szenario 3: Probleme mit Packages (die tückischste Falle)

\n\n

Sobald du anfängst, Packages zu verwenden, ändern sich die Spielregeln. Angenommen, du hast folgende Datei:

\n\n
// Datei: src/com/pythonlib/MyApp.java\npackage com.pythonlib;\n\npublic class MyApp {\n    public static void main(String[] args) {\n        System.out.println("Hallo von PythonLib!");\n    }\n}
\n\n

Viele Anfänger machen Folgendes:

\n\n
cd src\njavac com/pythonlib/MyApp.java   // Kompilierung erfolgreich\njava MyApp                        // FEHLER!
\n\n

Warum? Weil der vollständige Klassenname jetzt com.pythonlib.MyApp lautet, nicht nur MyApp. Die JVM sucht die Klasse unter ihrem vollständigen Namen.

Blogs

Buchempfehlungen