如何解决IntelliJ运行程序时出现的java.lang.IllegalAccessError内部错误
IntelliJ运行Java程序IllegalAccessError内部错误解决方法
触发的错误信息如下:
Error:Internal error: (java.lang.IllegalAccessError) class com.intellij.util.io.FileChannelUtil (in unnamed module @0x306279ee) cannot access class sun.nio.ch.FileChannelImpl (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x306279ee
该错误由IntelliJ版本与使用的JDK版本不兼容导致:JDK 9及以上版本引入了模块系统,默认限制对sun.*内部API的访问,未适配的旧版IntelliJ调用相关API就会触发报错,可按以下优先级选择解决方案:
- 方案1(最推荐):升级IntelliJ IDEA到最新稳定版
新版本IntelliJ已经完成高版本JDK的适配,升级后直接重启即可正常运行,无需额外修改任何配置。 - 方案2:修改IntelliJ启动VM参数
若暂时无法升级IntelliJ,可手动添加模块开放参数解除访问限制:- 打开自定义VM选项配置页:
- 未进入项目时,点击启动页右下角的
Configure->Edit Custom VM Options - 已进入项目时,点击顶部菜单栏
Help->Edit Custom VM Options
- 未进入项目时,点击启动页右下角的
- 在配置文件末尾添加如下参数:
--add-exports java.base/sun.nio.ch=ALL-UNNAMED - 保存配置后重启IntelliJ即可生效。
- 打开自定义VM选项配置页:
- 方案3:下调项目JDK版本
若不想修改IntelliJ配置,可将项目使用的JDK版本降低到当前IntelliJ兼容的版本,比如JDK 8不存在模块系统限制,不会触发该类报错。
内容的提问来源于stack exchange,提问作者Wheezer
相关产品推荐
相关产品推荐

