mvn javafx:jlink报错Module jdk.jsobject not found排查修复
根因确认
报错核心原因和排查结论一致:javafx:jlink插件执行时默认会读取当前执行环境的JAVA_HOME路径查找jlink工具,当前环境的JAVA_HOME指向了Android Studio内置的裁剪版JRE,该JRE没有包含jdk.jsobject等JavaFX运行依赖的标准JDK模块,必然会触发模块找不到的构建错误。
修复方案(按优先级操作)
- 全局环境变量修复(推荐,一劳永逸)
- 打开系统环境变量配置面板,找到系统变量中的
JAVA_HOME条目,将值修改为本地安装的、和项目Java版本匹配的完整JDK根目录(注意是JDK不是JRE,路径不要写到bin层,正确路径格式参考:C:\dev\jdk\jdk-17.0.10),删除原有的Android Studio内置JRE路径配置。 - 检查系统
Path变量,删除所有旧的、指向Android Studio JRE下bin目录的Java相关路径,新增%JAVA_HOME%\bin条目。 - 关闭所有已打开的命令行、Eclipse窗口(旧窗口不会加载新的环境变量),新开命令行执行
jlink --version,确认输出的版本号和配置的JDK版本一致,路径指向配置的JDK下的bin目录。
- 打开系统环境变量配置面板,找到系统变量中的
- Eclipse运行环境修复
- 打开Eclipse偏好设置,进入
Java > Installed JREs,将默认JRE设置为刚才配置的标准JDK,移除列表里的Android Studio内置JRE条目。 - 进入
Maven > Installations,优先选择本地独立安装的Maven,不要使用Eclipse嵌入式Maven;再进入Maven > Launching,将Maven构建的默认运行JRE设置为标准JDK。 - 右键出错的项目,选择
Build Path > Configure Build Path,移除类路径中所有指向Android Studio JRE的条目,重新关联标准JDK。
- 打开Eclipse偏好设置,进入
- 项目级兜底配置(不需要改全局环境变量时使用)
如果因为Android Studio开发需要保留原来的环境变量配置,可以直接在项目pom.xml的javafx-maven-plugin配置中显式指定jlink的绝对路径,跳过环境变量查找逻辑,配置示例:
<plugin> <groupId>org.openjfx</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>0.0.8</version> <configuration> <!-- 替换为本地JDK中jlink的实际绝对路径,Mac/Linux路径无.exe后缀 --> <jlinkExecutable>C:/dev/jdk/jdk-17.0.10/bin/jlink.exe</jlinkExecutable> <mainClass>com.yourpackage.Main</mainClass> <!-- 其余原有配置保持不变 --> </configuration> </plugin>
- 重新构建验证
右键项目选择Maven > Update Project,勾选强制更新快照/发布版选项,确认项目配置刷新完成后,重新执行mvn clean javafx:jlink即可。如果需要确认路径是否正确,可以加-X参数查看debug日志,确认日志中调用的jlink路径为标准JDK路径即可。
注意:Android Studio内置的JRE是专门为Android开发裁剪的运行时,缺少很多标准JDK的模块和工具,不能用来做JavaSE/JavaFX项目的开发、构建运行时,所有Java开发相关的构建操作都必须使用标准发行版OpenJDK/OracleJDK。
内容的提问来源于stack exchange,提问作者Dmitriy
相关产品推荐
相关产品推荐

