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

JavaFX鼠标点击场景播放音频出现IllegalAccessError问题求助

问题原因及解决方案

原因

这个IllegalAccessError是Java模块系统的权限限制导致的:

  • JavaFX的javafx.base模块默认不会将内部包com.sun.javafx暴露给未命名模块(如果你的项目没有定义module-info.java,就属于未命名模块)。
  • 负责媒体定位的com.sun.media.jfxmedia.locator.Locator类需要访问com.sun.javafx.PlatformUtil这个内部工具类,但模块系统阻止了这种跨模块的内部API访问,因此触发错误。

解决方案

1. 添加VM运行参数(最直接的解决方式)

在项目运行配置中添加以下VM参数,允许未命名模块访问javafx.base的内部包:

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

如果你的项目是模块化项目(有module-info.java),将ALL-UNNAMED替换为你的模块名称即可。

2. 确保JavaFX与JDK版本匹配

如果你的JavaFX SDK版本和使用的JDK版本不兼容,也可能引发这类内部API访问异常。请确认两者版本一致(比如都用JavaFX 17和JDK 17)。

3. 模块化项目的额外配置(可选)

如果采用模块化开发,可在module-info.java中显式声明依赖并开放访问:

module your.module.name {
    requires javafx.media;
    requires javafx.base;
    opens your.package.name to javafx.media; // 若媒体资源在你的包内,需要开放给javafx.media访问
}

内容的提问来源于stack exchange,提问作者Xellic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:42:39