In Java markiert die Methode main() den Start- und Endpunkt jedes Programms. Nur An­wei­sun­gen innerhalb ihres Gül­tig­keits­be­reichs werden bei der Aus­füh­rung be­rück­sich­tigt. Deshalb ist es ent­schei­dend, dass du beim Coden die Syntax der Methode exakt einhältst. Fehler an dieser Stelle führen dazu, dass dein Programm erst gar nicht startet.

Was ist die Main Method in Java?

Un­ab­hän­gig davon, welches Projekt du mit der Pro­gram­mier­spra­che rea­li­sierst oder wie komplex dein Code ist: Am Anfang jeder Java-Anwendung steht die Methode main(). Ohne sie lässt sich der Code nicht ausführen. Bevor die Übergabe an main() erfolgt, wird die Java Virtual Machine (JVM) geladen und der Code kom­pi­liert. Danach übernimmt die main-Methode die Kontrolle für eine hof­fent­lich rei­bungs­lo­se Aus­füh­rung. Du kannst zwar mehrere solcher Methoden nutzen, al­ler­dings ist maximal eine main-Methode pro Klasse erlaubt.

Die Syntax der Java-Methode main()

Die Syntax der main()-Methode in Java bleibt stets gleich und setzt sich aus fixen Be­stand­tei­len zusammen. So sieht sie aus:

public static void main(String[] args)
java

Diese Kom­po­nen­ten erfüllen folgende Zwecke:

  • public: Ga­ran­tiert, dass auch von außen auf eine Klasse zu­ge­grif­fen werden kann.
  • static: De­kla­riert die Methode als statisch. Damit existiert sie, ohne dass vorab ein Objekt der Klasse erstellt werden muss.
  • void: Legt fest, dass die Methode main() in Java keinen Rück­ga­be­wert liefert.
  • main: Der Name, über den die Java Virtual Machine die Methode beim Pro­gramm­start iden­ti­fi­ziert.
  • String[] args: Ein Array, das die Kom­man­do­zei­len­ar­gu­men­te ent­ge­gen­nimmt und speichert.

Die einzelnen Kom­po­nen­ten und ihr Nutzen

Damit du verstehst, warum jeder Teil der Java-Methode main() un­ver­zicht­bar ist, sehen wir uns die Details genauer an. Wir zeigen dir, was passiert, wenn ein Element der Signatur fehlt. Als Basis nutzen wir ein simples Beispiel, das wir mit dem Java-Befehl System.out.println ausgeben:

public class main {
	public static void main(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Führst du diesen Code aus, erscheint folgende Ausgabe:

Hier steht Ihr Beispieltext.
bash

public

„public“ dient als Zu­griffs­mo­di­fi­ka­tor und zeigt der Java Virtual Machine, wo das Programm aus­ge­führt wird. Zwar gibt es andere Mo­di­fi­ka­to­ren wie default, private oder protected, doch in der main()-Methode führen diese zu einer Feh­ler­mel­dung:

public class main {
	private static void main(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Die Ausgabe dazu sieht so aus:

Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
bash

Diese Meldung bestätigt, dass kein öf­fent­li­cher Zugriff auf die Methode möglich ist.

static

Das Keyword „static“ markiert die Methode als statisch. Dadurch ist sie un­ab­hän­gig von Klas­sen­in­stan­zen nutzbar. Entfernst du diese De­kla­ra­ti­on, sieht der Code so aus:

public class main {
	public void main(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Auch hier quittiert Java den Versuch mit einer Feh­ler­mel­dung statt der ge­wünsch­ten Ausgabe:

Error: Main method is not static in class test, please define the main method as:
public static void main(String[] args)
bash

void

„void“ legt fest, dass die main-Methode keine Werte zu­rück­gibt. Da sie der Start- und Endpunkt ist, wäre ein Rück­ga­be­wert ohnehin hinfällig. Ohne „void“ sähe der Code so aus:

public class main {
	public static main(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Das Fehlen des Keywords ver­ur­sacht folgenden Fehler:

Error: Main method must return a value of type void in class Main, please define the main method as:
public static void main(String[] args)
bash

main

Java sucht beim Pro­gramm­start immer nach dem Iden­ti­fier „main“. Er definiert, wo die Aus­füh­rung beginnt und endet. Sobald die main()-Methode durch­ge­lau­fen ist, stoppt das Programm. Diese Signatur darfst du niemals verändern. Ein falscher Name sieht etwa so aus:

public class main {
	public static void ersatzMain(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Da die JVM den Iden­ti­fier nicht findet, bricht sie sofort mit dieser Meldung ab:

Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
bash

String[] args

Das Array „String[] args“ gehört zur Klasse java.lang.String und speichert Daten als String-Werte. Lässt du diese Angabe weg, ändert sich der Code wie folgt:

public class main {
	public static void main() {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Ohne dieses Argument streikt die Java-Methode main() und liefert erneut eine Feh­ler­mel­dung:

Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
bash

Al­ter­na­ti­ve Schreib­wei­sen

Unser Beispiel nutzt die Standard-Syntax. Du kannst sie jedoch leicht variieren, falls es dir mehr Übersicht bietet. Bei­spiels­wei­se lassen sich die eckigen Klammern direkt hinter „args“ setzen:

public static void main(String args[]) { }
java

Zudem ist es erlaubt, Argumente als „Varargs“ (variable Ar­gu­ment­lis­ten) zu de­fi­nie­ren:

public static void main(String…args) { }
java
Zum Hauptmenü