Error: JavaFX runtime components are missing - JavaFX 11 and OpenJDK 11 and Eclipse IDE

Error: JavaFX runtime components are missing - JavaFX 11 and OpenJDK 11 and 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。

然后我将 JavaFX 11 SDK 中的 .jar 文件包含在 Eclipse IDE 的库包中。

然后我将这个库包包含到我的 JAdaptiveMPC 项目中。

我的代码语法没有错误,但我仍然无法编译我的项目。

你知道为什么吗?如果我从 Maven 导入所有这些 .jar 文件而不是下载 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

中添加了这个

然后我尝试 运行

仍然有错误。

您的问题不在于编译项目,而是 运行 它。 由于您的 main 是在 Application 扩展中定义的,因此 运行 该项目在启动时需要在您的模块路径中使用 JavaFX。

因此,要么将您的 main 外包给不同于您的 Application 的 class,要么添加带有 VM 参数的 JavaFX 模块:

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

有关更多信息,请参阅 this

这个问题很老了,但它在 intellij(linux) 中对我有用:

1- 转到 运行 -> 编辑配置

2- 在 VM 选项中添加路径:

--模块路径yourpath/lib--添加模块javafx.controls,javafx.fxml

在 eclipse 中,我从下拉列表中选择了这个 MODULE PATH 选项,它对我有用——我不需要 vm 工具。确保将 JavaFx Jar 添加到 Dependencies 选项卡下的 ModulePath 中(Eclipse >> Project >> Configurations)

我正在研究 Eclipse。对我来说,运行 具有以下 VM 参数的 class 有效:

-p C:\<your_path>\javafx-sdk-11\lib --add-modules javafx.controls,javafx.base,javafx.fxml,javafx.graphics,javafx.media,javafx.web --add-opens=javafx.graphics/javafx.scene=ALL-UNNAMED --add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED
-Djava.library.path="C:\<your_path>\javafx-sdk-11\bin"