You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ打包的Jar文件无法运行,提示JavaFX运行时组件缺失

解决JavaFX Jar运行报错“JavaFX runtime components are missing”的问题

问题根源

从JDK 11版本开始,JavaFX不再作为JDK的默认内置组件发布。你按照常规步骤打包的Jar文件仅包含自身业务代码,未嵌入JavaFX依赖组件,因此运行时JVM无法找到必需的JavaFX运行环境,触发该错误。

解决方案

1. 运行时手动指定JavaFX依赖路径

若已下载对应版本的JavaFX SDK(需与打包Jar时使用的JDK、JavaFX版本一致),解压后在CMD中执行以下命令运行Jar:

java --module-path "你的JavaFX SDK解压目录下的lib文件夹路径" --add-modules javafx.controls,javafx.fxml -jar file-name.jar
  • 替换"你的JavaFX SDK解压目录下的lib文件夹路径"为实际路径(例如D:\javafx-sdk-21\lib)
  • 根据项目实际用到的JavaFX模块调整--add-modules参数,比如用到javafx.web就追加该模块

2. 打包包含JavaFX依赖的“胖Jar”

使用Maven或Gradle等构建工具,通过插件将JavaFX依赖组件一并打包到Jar中,运行时无需额外指定路径:

  • Maven:配置javafx-maven-plugin,在插件configuration中指定主类,执行mvn clean javafx:jar生成包含依赖的Jar
  • Gradle:引入org.openjfx.javafxplugin插件,结合shadow插件配置胖Jar打包任务,执行构建命令生成可独立运行的Jar

3. 生成自定义Java运行镜像(推荐)

使用jlink工具创建包含JRE和JavaFX组件的自定义运行镜像,用户无需安装Java或JavaFX即可运行:

  • 基于Maven/Gradle的JavaFX插件,执行jlink相关任务(Maven为mvn clean javafx:jlink)
  • 生成的镜像目录中会包含启动脚本(Windows为.bat,Linux/macOS为.sh),直接运行脚本即可启动应用

额外注意事项

  • 打包前确保MANIFEST.MF中正确配置了主类,且主类继承自javafx.application.Application或正确初始化了JavaFX环境
  • 如果是模块化项目,module-info.java中必须声明requires javafx.controls;等所需的JavaFX模块

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:40:48