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

IntelliJ引入ControlsFX后运行报错:Unknown module及IllegalAccessError问题求助

IntelliJ引入ControlsFX后运行报错:Unknown module及IllegalAccessError问题求助

看起来你遇到的是ControlsFX在JavaFX模块化环境下的权限访问问题,我来帮你梳理下原因和解决办法:

问题根源分析

从报错信息能看出来两个核心问题:

  1. WARNING: Unknown module: org.controlsfx.controls specified to --add-exports:说明JVM找不到名为org.controlsfx.controls的命名模块,大概率是你的ControlsFX依赖处于**未命名模块(unnamed module)**中(比如手动导入jar但没配置模块,或者项目本身是非模块化的)。
  2. IllegalAccessError:JavaFX的javafx.base模块没有把内部包com.sun.javafx.event开放给ControlsFX所在的未命名模块,导致反射调用失败。

针对性解决方案

根据你的项目是否是模块化项目(有没有module-info.java),分两种情况处理:

情况1:非模块化项目(无module-info.java)

把你原来的VM参数替换成下面这个:

--add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED

解释:ALL-UNNAMED代表所有未命名模块,这样就能让JavaFX把内部包开放给ControlsFX所在的未命名模块,解决权限问题。

情况2:模块化项目(有module-info.java)

需要两步操作:

  1. 在module-info.java中添加对ControlsFX模块的依赖声明:
requires org.controlsfx.controls;
  1. 保留你原来的VM参数(此时JVM能找到org.controlsfx.controls模块了):
--add-exports javafx.base/com.sun.javafx.event=org.controlsfx.controls

额外注意事项

  • 确保ControlsFX版本和你的JavaFX版本兼容:比如你用的是JavaFX 20,建议使用ControlsFX 11.1.2及以上版本(高版本通常会适配新的JavaFX版本)。
  • 检查IntelliJ运行配置:VM参数要正确填写在Run -> Edit Configurations的VM options栏里,不要有拼写错误或者多余空格。
  • 如果是用Maven/Gradle引入依赖,确保依赖坐标正确,比如Maven的依赖配置:
<dependency>
    <groupId>org.controlsfx</groupId>
    <artifactId>controlsfx</artifactId>
    <version>11.1.2</version> <!-- 可根据JavaFX版本调整 -->
</dependency>

按照上面的步骤调整后,应该就能解决运行时的报错问题,正常使用ControlsFX的功能了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:38:06