Когда вы используете команду java
для запуска приложения Java из командной строки, например,
java some.AppName arg1 arg2 ...
, команда загружает назначенный вами класс, а затем ищет метод точки входа, называемыйmain
.Более конкретно, он ищет метод, который объявлен следующим образом:
package some;
public class AppName {
...
public static void main(String[] args) {
// body of main method follows
...
}
}
Особые требования для метода точки входа:
- Метод должен быть в назначенномclass.
- Имя метода должно быть "main" с точно с заглавной буквы 1 .
- Метод должен быть
public
. - Метод должен быть
static
2 . - Тип возвращаемого значения метода должен быть
void
. - Метод должен иметь ровно один аргументи тип аргумента должен быть
String[]
3 .
(Аргумент может быть объявлен с использованием синтаксиса varargs; например, String... args
. Для получения дополнительной информации см. этот вопрос . Используется аргумент String[]
передать аргументы из командной строки, и это требуется, даже если ваше приложение не принимает аргументов командной строки.)
Если какое-либо из указанных выше требований не выполнено, команда java
завершится ошибкой с некоторым вариантомсообщения:
Error: Main method not found in class MyClass, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
Или, если вы используете чрезвычайно старую версию Java:
java.lang.NoSuchMethodError: main
Exception in thread "main"
Если вы столкнулись с этой ошибкой, убедитесь, что выиметь метод main
и он удовлетворяет всем 6 требованиям, перечисленным выше.
1 - Один из действительно неясных вариантов этого - когда один или несколько символов в «main»НЕ является символом LATIN-1 ... но символом Unicode, который выглядит как соответствующий символ LATIN-1 при отображении.
2 - см. Почему основной метод Java статичен? для объясненияИон того, почему метод должен быть статическим.
3 - String
должен соответствовать java.lang.String
, а не пользовательскому классу с именем String
, скрывающему его.