В обычном Java приложении всегда должен быть main class, содержащий метод
main. С него начинается исполнение всей программы. Main class-ом может быть не только класс, но и интерфейс или енам. Для JavaFX приложения главный класс должен реализовывать
javafx.application.Application.
main обязательно
public static. Дополнительно, методу разрешено иметь модификатор
strictfp. На аннотации и список исключений ограничений не накладывается.
В главном методе должен быть объявлен единственный аргумент – массив строк. Обе конструкции
String[] и
String... компилируются в один и тот же байт-код, так что приемлемы оба варианта. Название массива может быть любым, а значение будет содержать аргументы командной строки.
Когда приложение запускается как classpath, главный класс передается параметром командной строки. Если выполняется единственный исходник, он и описывает main class.
Для исполняемого jar-файла (
java -jar MyJar.jar), его главный класс должен быть указан в манифесте. Внутри архива, в файл
META-INF/MANIFEST.MF добавляется строчка вида
Main-Class: com.itsobes.MyClass. Иначе запуск завершается ошибкой «no main manifest attribute».
В случае, когда в указанном главном классе не оказывается метода, который бы удовлетворял всем критериям главного метода, программа падает с ошибкой «Main method not found».
В апплетах вместо
main входной точкой служат методы
init и
start. Начиная с версии Java 9 технология апплетов объявлена устаревшей, а с 11 – совсем удалена. Не будем останавливаться на них подробнее.