Примечание. Мой ответ предполагает использование OpenJDK / OracleJDK.Я не знаю, ведут ли себя другие поставщики так же .
В документации, цитируемой другими, основное внимание уделяется инструменту JavaFX Packager, которого больше не существует 1 .Стоит отметить, что инструмент не кажется необходимым (по крайней мере для Java 10 и 11).Единственное, что требуется, - это наличие библиотек JavaFX и то, что назначенный основной класс расширяется Application
;тогда вам не нужен метод main
независимо от того, как собран код.
Существуют ли также функциональные причины для реализации основного метода?
Внормальное приложение JavaFX, я бы сказал, нет.Практически любая инициализация, которую вы хотели бы выполнить в main
, могла бы быть выполнена внутри Application.init
.У вас также есть доступ к аргументам командной строки через Application.getParameters
.
PS самый важный вопрос, почему компилятор принимает запуск в качестве отправной точки ... Это противоречит моему невротизму программирования
См. мой ответ здесь для получения подробной информации о внутренней процедуре запуска для приложений JavaFX (по крайней мере для 10 и 11).
Кроме того, компилятор не "принимает запуск в качестве отправной точки".Компилятор просто компилирует код и видит start
- и main
- так же, как и любой другой метод.Это среда выполнения, которая ищет main
и вызывает ее.Тем не менее, связанный ответ идет о том, как start
(и приложения JavaFX в целом) получает специальную обработку.
1.Инструмент упаковщика был удален в Java 11. Однако возможна замена: jpackager .