Не уверен, почему за это проголосовали, это решило это для меня.

a 8 я могу запустить приложение JavaFX с предварительным загрузчиком, используя следующий метод:

LauncherImpl.launchApplication(WindowMain.class, WindowMainPreloader.class, 
new String[]{...});

Я предпочитаю запускать его из кода, как описано выше, вместо использования конфигурации развертывания, потому что я не хочу, чтобы графический интерфейс запускался каждый раз, когда я запускаю приложение, а только после того, как какой-то код, который был вычислен для запуска приложения Режим графического интерфейса

Я использовал класс "com.sun.javafx.application.LauncherImpl", но, очевидно, в Java 9 все классы, начинающиеся с "com.sun", удалены. Итак, как я могу запустить приложение с preloader в Java 9?

Ответы на вопрос(2)

JDK 10 - модуль java.graphics-info.java

все классы в пакетеcom.sun.javafx.application экспортируется в специальные модули(java.base,javafx.controls,javafx.deploy,javafx.swing,javafx.web),

Так что, если вы добавите модуль(javafx.graphics) в вашем модуле его не работает,

так что используйте:System.setProperty("javafx.preloader",path_class_loader) в качестве альтернативыLauncherImpl заjkd 9 и выше

 Simon Hyll12 янв. 2019 г., 01:08
Не уверен, почему за это проголосовали, это решило это для меня.
Решение Вопроса

Как создать заставку в качестве Preloader в автономном приложении JavaFX?

системное свойствоjavafx.preloader=classname кажется, тоже работает.

Я не пробовал, но, возможно, вы могли бы попытаться установить это свойство и просто запустить свое основное приложение через общедоступныйApplication.launch(appClass, args) API и, возможно, прелоадер запустится первым.

Глядя в код дляApplication.launchПохоже, это будет работать. Вот код, который в конечном счете вызывается, скопированный из источника Java 8:

public static void launchApplication(final Class<? extends Application> appClass,
        final String[] args) {

    Class<? extends Preloader> preloaderClass = savedPreloaderClass;

    if (preloaderClass == null) {
        String preloaderByProperty = AccessController.doPrivileged((PrivilegedAction<String>) () ->
                System.getProperty("javafx.preloader"));
        if (preloaderByProperty != null) {
            try {
                preloaderClass = (Class<? extends Preloader>) Class.forName(preloaderByProperty,
                        false, appClass.getClassLoader());
            } catch (Exception e) {
                System.err.printf("Could not load preloader class '" + preloaderByProperty +
                        "', continuing without preloader.");
                e.printStackTrace();
            }
        }
    }

    launchApplication(appClass, preloaderClass, args);
}

Таким образом, вы должны иметь возможность запустить приложение с предварительным загрузчиком, используя:

System.setProperty("javafx.preloader", "my fully qualified preloader class name");
Application.launch(myMainClass, args);

Ваш ответ на вопрос