Изменить начальную точку выполнения Java-программы

1

Это вопрос интервью, на который меня спросили. Мы все знаем, что выполнение Java-программы начинается с основного метода со следующей сигнатурой:

public static void main(String[] arg)

Есть ли способ изменить начальную точку выполнения программы Java, на другой метод, скажем, путем настройки любых параметров конфигурации JVM?

  • 0
    Вы можете добавить статический блок, чтобы он стал отправной точкой.
  • 0
    Ну, Applet тоже Applet , довольно простой способ.
Показать ещё 1 комментарий
Теги:

3 ответа

4
Лучший ответ

Нет. Независимо от того, что приложение делает под обложками или как это может возникнуть, ваша программа должна содержать метод, объявленный public static void main(String[] args) (или некоторое объявление vararg args).

Это описано в разделе JLS, раздел 12:

Виртуальная машина Java запускается путем загрузки указанного класса и последующего вызова метода main в указанном классе.

Если main не существует, возникает ошибка времени выполнения - в частности, NoSuchMethodError (и он будет жаловаться на то, что не найдет main).

1

Есть ли способ изменить начальную точку выполнения программы Java, на другой метод, скажем, путем настройки любых параметров конфигурации JVM?

Ответ - нет. вы не можете.

Когда обычный JVM начинает запускать класс, он ищет основной метод в классе. Это способ jvm.

Вы также можете добавить в свой ответ, что существуют другие модели исполнения для Java-программы. например, апплет, сервлет и т.д.

апплет будет запущен в браузере, который поддерживает jvm без основного метода. сервлет будет работать в контейнере сервлетов без основного метода.

То, что вы добавляете в статическом блоке, выполняется до основного... но все же класс не будет работать без main. Следовательно, теоретически можно изменить начальную точку java-программы, добавив статический блок, но выполнение программы завершится неудачей, если в классе нет основного.

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

0

Действительно, можно запускать приложение по любому из нескольких методов, все из которых называются main, выбирая класс, который имеет основное, что я хочу. Я делаю это все время для тестирования. Я бы рассмотрел этот метод как настройку параметров конфигурации JVM. Вот о чем говорится в документации по Java.

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню