Нужен ли метод Main в Java-программе?

Основной метод нужен для написания Java-программы?

Это мой код:

package example;

public class HelloWorld {

    public HelloWorld() {

    }

    public String getHelloWorld() {

        return "Hello From Java!";
    }
}

Это показывает ошибку при компиляции:

java.lang.NoSuchMethodError: main
Exception in thread "main"

9 ответов

Решение

Основной метод не требуется в Java-программах. Как уже отмечали другие, веб-приложения не используют основной метод.

Это даже не нужно в автономных приложениях. Рассматривать

class JavaAppWithoutMain
{
    static
    {
    System . out . println ( "Hello World!" ) ;
    }
}

Я скомпилировал его, запустил и получил следующий результат:

Hello World!
Exception in thread "main" java.lang.NoSuchMethodError: main

Для автономных приложений вы должны иметь

  1. основной метод или
  2. статический инициализатор.

Главное является предпочтительным.

main Метод является точкой входа по умолчанию для программы. Если вы не определили один, а затем попытаетесь выполнить созданный jar, это то, что вы увидите. Если вы не пытаетесь создать программу, которую нужно запустить самостоятельно, она вам не понадобится - например, банку, на которую ссылаются другие программы, или веб-сайт.

Если вы попытаетесь выполнить класс Java, JVM будет искать main способ вызвать его. Из ГЛАВЫ 12 Выполнение спецификации языка Java:

Виртуальная машина Java запускается, загружая указанный класс и затем вызывая метод main в этом указанном классе. Раздел §12.1 описывает шаги загрузки, компоновки и инициализации, связанные с выполнением main, как введение в понятия в этой главе. Дальнейшие разделы определяют детали загрузки (§12.2), связывания (§12.3) и инициализации (§12.4).

Не всем классам нужна main только тот, который служит "точкой входа" для выполнения.

Без main Метод вашего приложения не будет иметь точки входа. Да, это требуется для любой исполняемой программы.

Нет, это не нужно, например, для веб-приложений. Они не используют main() метод, но если вы тестируете или запускаете отдельное приложение, чтобы узнать ожидаемый результат, вам может потребоваться main() метод.

Автономные приложения требуют main, потому что это точка входа. Как JVM узнает, с чего начать программу?

Причина, по которой вы получаете это сообщение об ошибке, заключается в том, что вы пытаетесь запустить класс, используя java (java.exe в Windows), и он ожидает найти метод main().

Этот метод не обязателен как таковой, но он может сформировать точку входа, где инициируется приложение. Вы можете переписать свой класс следующим образом, чтобы достичь желаемого результата:

package example;
public class HelloWorld {

 // Running a class using java invokes this method
 public static void main(String[] args) {
  HelloWorld hw = new HelloWorld();

  System.out.println( hw.getHelloWorld() );
 }

 public HelloWorld() { 
 }

 public String getHelloWorld() {
  return "Hello From Java!";
 }
}

Вашему java-приложению или программе (не каждому отдельному классу) нужен хотя бы один основной метод для его запуска. И тот, который вы получили, это не ошибка компиляции, а ошибка времени выполнения.

"Когда вы сохраняете программу с именем, совпадающим с именем класса, которое содержит метод main (), то во время выполнения JVM создаст объект этого класса, и с этим объектом JVM вызовет метод main () как объект. главный().

Поэтому, если метод main () отсутствует (статический инициализатор также отсутствует), он выдаст исключение."

Для веб-приложения такое же объяснение, как и выше.

ref: Java Понимание основного метода Java по логике

Другие вопросы по тегам