You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

已安装JavaFX但Eclipse无法使用,报运行时组件缺失错误原因咨询

JavaFX运行错误 "Error: JavaFX runtime components are missing" 的原因及解决办法

这个问题我帮不少开发者排查过,结合你用的Java 13、Eclipse 2019-12环境,核心原因和解决思路如下:

错误原因分析

  • JavaFX的模块化分离:从Java 11开始,JavaFX就不再捆绑在JDK中,变成了独立的运行时组件。你把JavaFX的Jar包添加到项目Build Path,只是让Eclipse编译器能找到类文件,但运行时JVM并不知道这些组件的位置
  • Eclipse运行配置缺失关键参数:通过「用户库」添加JavaFX到Build Path的操作,不会自动配置JVM的运行参数。Java 13属于模块化JDK环境,启动JavaFX应用时必须明确告诉JVM JavaFX模块的路径,否则JVM找不到对应的运行时组件,就会抛出这个错误。

具体解决步骤(针对Eclipse 2019-12)

  1. 右键你的Java项目,选择「Run As」→「Run Configurations」
  2. 在弹出的窗口中,找到对应的Java应用配置(如果没有就点击左侧「Java Application」后点击「New Configuration」新建一个)
  3. 切换到「Arguments」标签页,在「VM arguments」输入框中添加以下参数:
    --module-path "你的JavaFX SDK解压后的lib文件夹绝对路径" --add-modules javafx.controls,javafx.fxml
    
    举个例子,如果你的JavaFX SDK解压在C:\javafx-sdk-13\lib,那参数就是:
    --module-path "C:\javafx-sdk-13\lib" --add-modules javafx.controls,javafx.fxml
    
    注意:如果路径包含空格,一定要用双引号括起来;如果项目用到了JavaFX的其他模块(比如javafx.webjavafx.media),要把这些模块也加到--add-modules后面,用逗号分隔。
  4. 点击「Apply」保存配置,再点击「Run」启动程序,应该就能正常运行了。

补充说明

如果你的项目是模块化项目(根目录下有module-info.java文件),除了上述VM参数,还需要在module-info.java中声明对JavaFX模块的依赖,比如:

module your.project.name {
    requires javafx.controls;
    requires javafx.fxml;
    // 如果用到其他模块,继续添加requires语句
}

这种情况下,VM参数中的--add-modules可以省略,但--module-path仍然需要配置。

内容的提问来源于stack exchange,提问作者Coder88

火山引擎 最新活动