Когда вы используете команду java
для запуска приложения Java из командной строки, например,
java some.AppName arg1 arg2 ...
команда загружает назначенный вами класс, а затем ищет метод точки входа с именем main
. В частности, он ищет метод, который объявлен следующим образом:
package some;
public class AppName {
...
public static void main(final String[] args) {
// body of main method follows
...
}
}
Особые требования к методу точки входа:
- Метод должен относиться к номинированному классу.
- Имя метода должно быть основным с ровно заглавными буквами 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
метод и что он удовлетворяет всем шести требованиям, перечисленным выше.
1 - Один действительно неясный вариант этого - когда один или несколько символов в main НЕ являются символом LATIN-1 ... а символом Unicode, который выглядит как соответствующий символ LATIN-1, когда отображается.
2 - Здесь объясняется, почему метод должен быть статическим.
3 - String
должен соответствовать java.lang.String
, а не настраиваемому классу с именем String
, скрывающему его.
person
Community
schedule
23.03.2011