Как добавить среду выполнения JavaFX в Eclipse в Java 11? - PullRequest
0 голосов
/ 03 сентября 2018

Я получаю следующую ошибку, поскольку Java 11 исключила JavaFX как часть последней версии.

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

Так как я могу добавить JavaFX в Eclipse в Java 11? Спасибо.

Ответы [ 4 ]

0 голосов
/ 15 апреля 2019

У меня были проблемы с FXMLLoader ... Не удалось найти класс.

Я решил эту проблему, изменив приведенные выше аргументы, чтобы загрузить все модули, а не только javafx.controls:

--module-path <path to the javafx sdk> --add-modules=ALL-MODULE-PATH
0 голосов
/ 24 декабря 2018

@ Хосе Переда совершенно прав, все работает как надо. Я проверил это с выпуском Eclipse 2018-12. Таким образом, после загрузки среды IDE (https://www.eclipse.org/downloads/packages/release/2018-12/r/eclipse-ide-java-developers) и установки плагина esexsex клипса e) вы сможете создать элемент «JavaFx Project» в своем рабочем пространстве.

Следующим шагом является удаление «JavaFX SDK» из модуля «Classpath» (Свойства -> Путь сборки Java -> Библиотеки) и добавление зависимости Maven для удаления ошибок компиляции:

<dependency>
   <groupId>org.openjfx</groupId>
   <artifactId>javafx-controls</artifactId>
   <version>11.0.1</version>
</dependency>

JavaFX SDK for deletion

Последний шаг - добавить аргумент VM в «Run Configuration» вашего класса JavaFX для запуска приложения («Run Configurations» -> «Arguments tab» -> VM arguments):

--module-path C:\path to the OpenJFX\javafx-sdk-11.0.1\lib --add-modules=javafx.controls

и оно должно работать после запуска. Конечно, вы должны загрузить JavaFX SDK до этого (https://gluonhq.com/products/javafx/), разархивируйте его и используйте путь к папке «lib» в вышеупомянутом аргументе VM.

0 голосов
/ 22 марта 2019

Я хотел бы поделиться своими выводами о запуске приложения javafx 11. Я говорю о существующем унаследованном приложении javafx, изначально разработанном без модулей (например, с Java 8).

Наиболее интересным способом IMO является Метод # 2b ниже, который требует минимума изменений, , т.е. ему не нужно -module-path аргумент . Я упоминаю, что я использую Maven, поэтому ср. В предыдущих ответах первым шагом является добавление зависимости в вашем pom.xml в сторону javafx. E.g.:

<dependency>
  <groupId>org.openjfx</groupId>
  <artifactId>javafx-controls</artifactId>
  <version>11.0.2</version>
</dependency>

Для запуска я нашел несколько вариантов:

1a) Запуск с помощью maven из командной строки

Настройте в вашем pom.xml раздел, например:

    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>org.openjfx.hellofx.MainApp</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

После этого из окна консоли вы можете запустить mvn exec:java, и это должно запустить приложение. Maven позаботится о добавлении всех записей из classpath в путь к модулю . Я напоминаю ярлык CTRL + ALT + T в Eclipse, который открывает окно терминала прямо в IDE.

1b) Запуск с использованием maven, но в качестве конфигурации запуска Eclipse

Щелкните правой кнопкой мыши проект> Запуск от имени> Maven Build ... . Затем введите exec:java в текстовом поле Goals . Преимущество по сравнению с предыдущим методом: немного более интегрировано в Eclipse. И легкая отладка. Вам нужно только перезапустить конфигурацию запуска в режиме отладки и все. Позвольте напомнить, что конфиги запуска Eclipse могут храниться в виде файлов .launch непосредственно в каталоге проекта (репо), что позволяет коллегам использовать их / использовать повторно. Используйте последнюю вкладку, Общие , в Редактировать конфигурацию .

2a) Запустите с помощью Eclipse и укажите -module-path с помощью переменной

Щелкните правой кнопкой мыши основной класс> Запуск от имени> Java-приложение . При первом щелчке создается новая конфигурация запуска; возможно, это не сработает, поэтому вам нужно отредактировать его (например, ** кнопку «Выполнить» (с иконкой «Play») на панели инструментов> «Выполнить настройки»> выберите тот, который соответствует вашему классу. Или CTRL + click на нем после нажатия Play ).

Затем добавьте это в Аргументы> ВМ аргументы :

--module-path ${project_classpath:REPLACE_ME_WITH_YOUR_PROJECT_NAME} --add-modules javafx.controls,javafx.fxml

Так что хитрость в том, чтобы использовать переменную ${project_classpath}. Потому что в противном случае вам нужно было бы написать именно путь к банке javafx, который находится где-то в вашем .m2 репо. Это может затруднить повторное использование конфигурацией запуска коллегами.

2b) Запуск с использованием Eclipse БЕЗ указания -module-path

Это la piece of resisistence , которое я обнаружил по ошибке после примерно 5 часов работы Java 11 с модулями "fun". Ваше приложение может работать из коробки, не касаясь -module-path. Разумеется, библиотеки javafx все еще должны быть в вашем classpath (но это обрабатывается mvn). Трюк (ср. это ), что ваше основное приложение НЕ ДОЛЖНО расширяться Application (например, MyApplication ниже). Если это ваш случай, то создайте новый класс с функцией main(), которая выполняет, например ::1010 *

Application.launch(MyApplication.class);

Примечание

В моем случае (то есть в Windows с JDK 8 по умолчанию в системе) существует известная проблема с запуском javafx. Решение состоит в том, чтобы добавить следующий аргумент VM: -Djava.library.path=C:. Так что на самом деле для всех 4 методов, описанных выше, мне нужно было добавить это.

0 голосов
/ 04 сентября 2018

Следуя руководству по началу работы , это необходимые шаги для запуска JavaFX 11 из Eclipse.

1 Установите Eclipse 2018-09 из здесь .

2 Установите JDK 11 из здесь .

3 Добавление Java 11 в качестве установленной JRE в Eclipse: Eclipse -> Окно -> Настройки -> Java -> Установленные JRE -> Добавить.

4 Загрузите JavaFX 11 ea с здесь .

5 Создайте пользовательскую библиотеку: Eclipse -> Window -> Preferences -> Java -> Build Path -> User Libraries -> New. Назовите его JavaFX11 и включите файлы jar в папку lib из JavaFX 11-ea.

6 Создайте проект Java. Вам не нужно добавлять класс модуля-пути. Убедитесь, что вы выбрали Java 11 и добавили библиотеку JavaFX11 в путь модуля проекта.

7 Добавьте пакет javafx11 и основной класс приложения HelloFX:

package javafx11;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;


public class HelloFX extends Application {

    @Override
    public void start(Stage stage) {
        String version = System.getProperty("java.version");
        Label l = new Label ("Hello, JavaFX 11, running on "+version);
        Scene scene = new Scene (new StackPane(l), 300, 200);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

Обратите внимание, что редактор не должен жаловаться на классы JavaFX, так как мы включили пользовательскую библиотеку.

8 Добавить аргументы времени выполнения. Отредактируйте конфигурацию запуска проекта и добавьте следующие аргументы VM:

--module-path C:\Users\<user>\Downloads\javafx-sdk-11\lib --add-modules=javafx.controls

9 Наконец, запустите проект. Должно работать нормально.

...