Ошибка: отсутствуют компоненты среды выполнения JavaFX - JavaFX 11, OpenJDK 11 и Eclipse IDE

У меня классическая проблема: использование JavaFX 11 с OpenJDK 11 вместе с Eclipse IDE.

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

У меня OpenJDK 11.0.2

dell@dell-pc:~$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
dell@dell-pc:~$ 

И еще у меня JavaFX 11 SDK. Кстати! Если вам интересно, я использую Lubuntu Linux 18.10. введите описание изображения здесь

Затем я включил .jar файлы из JavaFX 11 SDK в Eclipse IDE в пакет библиотеки.

введите описание изображения здесь

Затем я включил этот пакет библиотеки в свой JAdaptiveMPC проект. введите описание изображения здесь

У меня нет ошибок в синтаксисе кода, но я все равно не могу скомпилировать свой проект. введите описание изображения здесь

Ты знаешь почему? У меня такая же ошибка, если я импортирую все эти .jar файлы из Maven вместо того, чтобы загружать JavaFX SDK и импортировать его в библиотеку.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Control</groupId>
  <artifactId>JAdaptiveMPC</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx</artifactId>
        <version>13-ea+5</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>13-ea+5</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>13-ea+5</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>13-ea+5</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-swing</artifactId>
        <version>13-ea+5</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>13-ea+5</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-media</artifactId>
        <version>13-ea+5</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>13-ea+5</version>
    </dependency>
  </dependencies>
</project>

Продолжить

Я добавил это в Run Configuration

введите описание изображения здесь

А затем я пытаюсь запустить  введите описание изображения здесь

По-прежнему ошибки.


person Daniel Mårtensson    schedule 19.04.2019    source источник
comment
Дублировано из IntelliJ IDEA - Ошибка: Компоненты среды выполнения JavaFX отсутствуют и необходимы для запуска этого приложения: если вы запускаете свой проект как приложение Java, вам также необходимо добавить аргументы виртуальной машины. См. openjfx.io/openjfx-docs/#IDE-Eclipse (немодульный из IDE). Если вы используете Maven, см. Также раздел Maven.   -  person José Pereda    schedule 19.04.2019
comment
Я сделал это сейчас. По-прежнему ошибки. Не знаю почему. @ JoséPereda   -  person Daniel Mårtensson    schedule 19.04.2019
comment
Ошибки: ничего общего с JavaFX 11, но с самим JavaFX и FXML: ваш путь к файлу FXML неверен. Просто обратитесь к корню папки ресурсов, например getResources("/se/danielmartensson/controller/gui.fxml"). Кстати, при публикации вопроса код предпочтительнее снимков экрана.   -  person José Pereda    schedule 19.04.2019
comment
Теперь это работает. @ JoséPereda. Очень хорошо. Я знаю, что код предпочтительнее краткого описания экрана, но для новичков, которые не знают, как исправить эту проблему, снимки экрана более ценны, чем код.   -  person Daniel Mårtensson    schedule 19.04.2019


Ответы (3)


Ваша проблема не в компиляции проекта, а в его запуске. Поскольку ваш main определен в вашем Application-расширении, для запуска проекта потребуется JavaFX в пути к вашему модулю при запуске.

Поэтому либо передайте свой main классу, отличному от вашего Application, либо добавьте модули JavaFX с аргументами виртуальной машины:

--module-path="<javafx-root>\lib" --add-modules="javafx.base,javafx.controls,..."

Дополнительную информацию см. В this.

person Reizo    schedule 19.04.2019
comment
Привет! Спасибо за Ваш ответ. Но я сделал это. Смотрите мой обновленный вопрос. - person Daniel Mårtensson; 19.04.2019
comment
@Heretic извините, я внимательно проверил ваш пост. Очевидно, вы звоните FXMLLoader.setLocation​(URL), но, очевидно, ваш ресурс (\JAdaptiveMPC...\gui.fxml) не может быть найден. Поэтому проверьте правильность вашего местоположения, и Main.class.getResource(...) не возвращает null. - person Reizo; 19.04.2019
comment
@Reizo, не могли бы вы объяснить, как: добавить модули JavaFX с аргументами виртуальной машины, как вы указали в своем ответе. У меня такая же проблема, и мне пока не удалось ее исправить. Спасибо - person Trixie the Cat; 15.02.2020
comment
@TrixietheCat Вы должны передать указанные аргументы при запуске вашей программы с java. Обычно ваша IDE делает это под капотом и позволяет вам настроить, какие аргументы передавать виртуальной машине. Посмотрите пример this или узнайте, как укажите аргументы vm в Eclipse / IntelliJ / .... - person Reizo; 15.02.2020

Вопрос старый, но вот как он работал у меня в intellij (linux):

1- перейти к запуску -> редактировать конфигурации

2- добавьте путь в Параметры виртуальной машины:

--module-path yourpath / lib --add-modules javafx.controls, javafx.fxml

person hamza lakhal    schedule 18.03.2020

введите описание изображения здесь

В eclipse я выбрал эту опцию MODULE PATH из раскрывающегося списка, и она сработала для меня - мне не нужны были агрументы vm. Убедитесь, что файлы JavaFx Jar добавлены в ModulePath на вкладке Dependencies (Eclipse ›› Project ›› Configurations)

person Abdeali Chandanwala    schedule 01.07.2021