IntelliJ启动JavaFX应用报IllegalAccessError异常问题咨询
问题根因
报错由JavaFX模块加载冲突、启动模块配置不全共同导致,从启动命令可定位两个直接诱因:
- 类路径重复加载了两套不同存储路径的JavaFX依赖:一套位于
C:\Users\lilian.carion\Documents\javafx-sdk-18.0.1\lib,另一套位于C:\Users\lilian.carion\Downloads\javafx\,双份依赖混用会触发Java模块系统的访问权限校验异常 - 启动参数
--add-modules仅声明了javafx.controls模块,代码中加载FXML用到的javafx.fxml模块未被显式引入,Java 17强模块隔离机制会阻止跨模块的内部类访问。
修复步骤
- 清理重复依赖
打开IDEA的File -> Project Structure,在Libraries、Modules -> Dependencies配置页中,删除C:\Users\lilian.carion\Downloads\javafx\路径下的整套JavaFX依赖,仅保留Documents目录下18.0.1版本的JavaFX SDK,彻底消除版本/路径冲突。 - 修正VM启动参数
打开Main类的运行配置,找到VM options输入项,替换原有参数为以下内容,补全依赖模块:
注意:不要将JavaFX SDK下的jar包手动添加到项目类路径(classpath),模块路径下的依赖会被Java自动识别,双路径加载反而会触发模块访问错误。--module-path "C:\Users\lilian.carion\Documents\javafx-sdk-18.0.1\lib" --add-modules javafx.controls,javafx.fxml - 修正代码逻辑(可选建议)
现有main方法中launch(args)后的数据库操作代码不会按预期执行:launch()方法会阻塞当前线程直到JavaFX窗口关闭,且运行环境销毁后再调用数据库连接容易触发额外异常,相关业务逻辑建议移动到控制器初始化方法或start()生命周期方法中执行。 - 清理缓存验证
执行File -> Invalidate Caches...,勾选清除项目缓存后重启IDEA,重新编译项目后启动即可。
后续避坑
IDEA本地运行配置默认存储在项目.idea/runConfigurations目录下,若该目录被Git忽略,切换分支后配置会丢失。可在运行配置页勾选Store as project file,将配置纳入Git版本管理,避免重复配置。
内容的提问来源于stack exchange,提问作者Lilian Carion
相关产品推荐
相关产品推荐

