Ошибка: отсутствуют компоненты времени выполнения JavaFX, и они необходимы для запуска этого приложения на примере Gradle - PullRequest
1 голос
/ 16 января 2020

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

Взято из этого официального примера руководства: https://openjfx.io/openjfx-docs/#gradle Я продолжал и добавил в мой build.gradle :

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.8'
}

javafx {
    version = '13'
    modules = ['javafx.controls']
}

repositories {
    mavenCentral()
}

mainClassName = "MyImage"

jar {
    manifest {
        attributes "Main-Class": "$mainClassName"
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

, который при запуске gradle jar (или gradle build ) должен фактически производить jar, который должен включать все пакеты, с помощью которых он его собирает, то есть всю библиотеку javafx.

Однако, когда она успешно собирается, и я продолжаю работать:

java -jar build/libs/MyImage.jar

все равно выдает ошибку:

Error: JavaFX runtime components are missing, and are required to run this application

Чего мне не хватает?

(я использую JDK 11)

Большое спасибо .

1 Ответ

2 голосов
/ 16 января 2020

В Java 11 модуль запуска Java обнаруживает, что вы расширяете javafx.application.Application и проверяет наличие модулей. Если вы используете старые старые JAR-файлы, вы получите ошибку

Error: JavaFX runtime components are missing, and are required to run this application

У вас есть два варианта. Настройте ваше приложение для использования системы модулей Java или следующего обходного пути.

Этот обходной путь позволяет избежать проверки запуска Java и позволит запускать приложение.

public class MyImage {   // <=== note - does not extend Application

    public static class YourRealApplication extends Application {

        @Override
        public void start(Stage primaryStage) throws Exception {
            // whatever...
        }

    }

    public static void main(String[] args) {
        Application.launch(YourRealApplication.class);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...