(для справки, в eclipse я импортирую проект как проект Maven, поэтому m2e должен создать путь к классу точно так же, как Maven в командной строке, но кажется, что JRE добавлен как путь к модулю - см. скриншот, который я добавлю в мой оригинальный пост) (опять же, извините за то, что так настаивал, но мне нужно понять весь механизм в деталях, чтобы объяснить его команде;)

инаю копаться в миграции Java 11 для большого приложения (включая части Java FX), и мне нужна ваша помощь, чтобы понять разницу между Maven (3.5.4) в командной строке и Eclipse (2018-09 с обновлением Java11) ).

У меня есть простой класс Java 11

import java.util.stream.Stream;

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

public class HelloFX extends Application {

    @Override
    public void start(Stage stage) {
        String javaVersion = System.getProperty("java.version");
        String javafxVersion = System.getProperty("javafx.version");
        Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
        Scene scene = new Scene(l, 640, 480);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        Stream.of("jdk.module.path",
                "jdk.module.upgrade.path",
                "jdk.module.main",
                "jdk.module.main.class").forEach(key -> System.out.println(key + " : " + System.getProperty(key)));

        Application.launch();
    }

}

и простой пом

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.gluonhq</groupId>
    <artifactId>hellofx</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>HelloFX</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Когда я запускаю 'mvn compile exec: java', я думаю, что ничто не использует новый путь к модулю, и программа отображает панель JavaFX, как и ожидалось. Система состоит из:

jdk.module.path: null

jdk.module.upgrade.path: null

jdk.module.main: null

jdk.module.main.class: null

При запуске из модуля запуска Eclipse я должен добавить в модуль запуска следующие аргументы vm:

--module-path = $ {env_var: JAVAFX_PATH} --add-modules = javafx.controls

и панель также отображается, но вывод:

jdk.module.path: C: \ dev \ tools \ javafx-sdk-11 \ lib

jdk.module.upgrade.path: null

jdk.module.main: null

jdk.module.main.class: null

jdk.module.main.class: null

Я не могу заставить его работать в Eclipse, поскольку он работает из командной строки: я вынужден связываться с модулями и путь к модулю. Если я не добавляю параметры vm, я получаю либо «Ошибка: отсутствуют компоненты среды выполнения JavaFX, которые необходимы для запуска этого приложения», либо «Ошибка произошла во время инициализации загрузочного слоя java.lang.module.FindException: Модуль javafx.controls не найдено".

Как это может работать из командной строки без дополнительной настройки? Насколько мне известно, Maven не добавляет ничего автоматически к пути модуля ...

Любая идея ? Что мне не хватает?

Обновление 1: я понял, что при импорте проекта в Eclipse «как проект Maven» (что я всегда делаю) это приводит к добавлению JRE в путь к модулю (что не относится к моим проектам classis). Смотрите скриншот

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

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