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

使用jpackage打包集成ControlsFX的JavaFX项目时遭遇模块未找到异常

jpackage打包集成ControlsFX的JavaFX项目时遭遇模块未找到异常

看起来你遇到的问题主要是jpackage参数配置错误和ControlsFX模块名称误用导致的,我来帮你一步步解决:

首先,分析错误根源

你当前的命令有两个关键问题:

  1. 重复使用了--module-path参数:jpackage中--module-path只能声明一次,多个路径需要用分号(Windows系统)分隔,你写了两次--module-path,后面的会直接覆盖前面的,导致JavaFX的jmods路径没被正确识别,同时ControlsFX的路径也没生效。
  2. 模块名称写错了:ControlsFX 11+的官方模块名是org.controlsfx.controls,而不是你写的controlsfx,这才是java.lang.module.FindException的直接原因。

解决方案:修正jpackage命令

把你的命令改成下面这样,重点注意--module-path的合并和模块名的修正:

jpackage --input C:\...\target --add-modules javafx.controls,org.controlsfx.controls --module-path "C:\...\openjfx-20.0.1_windows-x64_bin-jmods\javafx-jmods-20.0.1;C:\..\controlsfx" --win-console --dest c:\test --main-jar tests-1.0-SNAPSHOT.jar --main-class tests.App

注意:Windows下如果路径包含空格,一定要用双引号把整个--module-path的内容括起来,避免命令解析出错。

额外的配置检查

如果修正命令后还是有问题,你需要检查项目的模块化配置:

  • 如果你的项目是模块化项目(存在module-info.java):
    一定要在module-info.java中声明对ControlsFX模块的依赖,比如:
    module tests {
        requires javafx.controls;
        requires org.controlsfx.controls;
        exports tests; // 根据你的主类所在包调整导出规则
    }
    
  • 如果是非模块化项目:
    确保ControlsFX的jar文件已经被正确放置在--input指定的target目录中,或者通过--module-path明确指向它所在的文件夹,同时保持--add-modules中的模块名正确。

版本兼容提醒

另外,虽然ControlsFX 11.1.2理论上兼容JavaFX 20,但如果后续遇到奇怪的兼容性问题,可以尝试使用和JavaFX大版本匹配的ControlsFX版本,或者升级到最新的ControlsFX稳定版。

备注:内容来源于stack exchange,提问作者droid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 12:43:14