15

我有这个经典问题:将 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。 在此处输入图像描述

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

在此处输入图像描述

然后我将这个库包包含到我的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

在此处输入图像描述

然后我试着跑 在此处输入图像描述

仍然错误。

4

4 回答 4

21

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

因此,要么将您外包main到与您不同的类中,Application要么添加带有 VM 参数的 JavaFX 模块:

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

有关更多信息,请参阅此内容。

于 2019-04-19T10:55:58.787 回答
2

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

1-去运行->编辑配置

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

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

于 2020-03-18T22:12:08.623 回答
1

在此处输入图像描述

在 Eclipse 中,我从下拉列表中选择了这个 MODULE PATH 选项,它对我有用——我不需要 vm agruments。确保将 JavaFx Jars 添加到 Dependencies 选项卡下的 ModulePath 中(Eclipse >> 项目 >> 配置)

于 2021-07-01T18:39:48.987 回答
-1

我正在研究 Eclipse。对我来说,使用以下 VM 参数运行类是有效的:

-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"
于 2021-11-19T14:01:08.920 回答