错误:缺少JavaFX运行时组件- JavaFX 11和OpenJDK 11以及Eclipse IDE

kg7wmglp  于 2022-12-21  发布在  Java
关注(0)|答案(4)|浏览(488)

我有一个经典的问题:使用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。顺便说一下!如果你想知道的话,我用的是LubuntuLinux18.10。x1c 0d1x
然后,我将Eclipse IDE中JavaFX 11 SDK中的.jar文件包含到一个库包中。

然后我将这个库包包含到我的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中添加了此内容

然后我尝试运行

仍然错误。

ie3xauqp

ie3xauqp1#

问题不在于编译项目,而在于运行项目。由于main是在Application-扩展中定义的,因此运行项目需要在启动时将JavaFX放在模块路径中。
因此,要么将main外包到与Application不同的类中,要么添加带有VM参数的JavaFX模块:

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

更多信息请参见此。

sirbozc5

sirbozc52#

这个问题是老问题了,但我在intellij(Linux)中确实遇到了这样的问题:
1-转到运行-〉编辑配置
2-在VM选项中添加路径:
--模块路径您的路径/lib --添加模块javafx.controls,javafx.fxml

zyfwsgd6

zyfwsgd63#

在eclipse中我从下拉菜单中选择了这个MODULE PATH选项,它对我很有效--我不需要虚拟机参数。确保JavaFx Jars被添加到依赖项标签下的ModulePath中(Eclipse〉〉项目〉〉配置)

mzmfm0qo

mzmfm0qo4#

我在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"

相关问题