Gradle shadowJar打包JavaFX项目运行报错:找不到javafx.controls模块
解决JavaFX ShadowJar运行时找不到模块的问题
问题核心
你的命令里--module-path指向了JDK的lib目录,但JavaFX模块并不包含在Oracle/OpenJDK的默认安装包中,所以系统找不到javafx.controls模块。
修复步骤
确认JavaFX SDK路径
下载对应JDK18版本的JavaFX SDK,解压到C:\Users\(ME)\Desktop\DEPLOYMENT目录下(比如命名为javafx-sdk-18.0.2),确保其lib目录下包含javafx.controls.jar等JavaFX模块文件。修正运行命令
将--module-path改为指向JavaFX SDK的lib目录,同时加入你需要的--add-exports选项,完整命令如下:java --module-path .\javafx-sdk-18.0.2\lib --add-modules=javafx.controls,javafx.fxml --add-exports javafx.base/com.sun.javafx.event=org.controlsfx.controls -jar .\kantine-all.jar简化运行方式(可选)
为避免每次输入长命令,可在部署目录下创建run.bat脚本,内容如下:@echo off java --module-path .\javafx-sdk-18.0.2\lib --add-modules=javafx.controls,javafx.fxml --add-exports javafx.base/com.sun.javafx.event=org.controlsfx.controls -jar .\kantine-all.jar pause双击该脚本即可直接运行程序。
额外提醒
- 确保JavaFX SDK版本与你使用的JDK版本(18.0.2)完全一致,避免版本不兼容导致的异常。
- 下载JavaFX SDK时要选择对应Windows平台的安装包。
内容的提问来源于stack exchange,提问作者Rocco
相关产品推荐
相关产品推荐

