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

JavaFX创建Media对象时触发IllegalAccessError错误求助

解决JavaFX创建Media对象时的IllegalAccessError错误

这个错误是Java模块系统的访问限制导致的:javafx.base模块默认不会将内部包com.sun.javafx开放给未命名模块(你的代码所在的模块),而Media组件的内部实现类需要访问这个包的内容,因此触发了IllegalAccessError。

针对普通Java环境(非Maven/Gradle),可以通过添加VM参数解决:

1. 编译与运行时的命令行参数

编译代码

使用javac编译时,需要指定JavaFX的模块路径并添加所需模块:

javac --module-path "你的JavaFX SDK路径/lib" --add-modules javafx.media,javafx.controls MusicPlayer.java

运行程序

运行时除了模块路径和添加模块,还要添加--add-exports参数开放内部包的访问权限:

java --module-path "你的JavaFX SDK路径/lib" --add-modules javafx.media,javafx.controls --add-exports javafx.base/com.sun.javafx=ALL-UNNAMED --add-exports javafx.media/com.sun.media.jfxmedia.locator=ALL-UNNAMED MusicPlayer

2. IDE中的配置(如果用IDE开发)

以IntelliJ IDEA为例,在运行配置的VM options中添加以下参数:

--module-path "你的JavaFX SDK路径/lib" --add-modules javafx.media,javafx.controls --add-exports javafx.base/com.sun.javafx=ALL-UNNAMED --add-exports javafx.media/com.sun.media.jfxmedia.locator=ALL-UNNAMED

额外优化建议

你的代码中fileChooser.showOpenDialog(new Stage())会新建一个空白Stage,建议替换为当前应用的主Stage(比如通过getPrimaryStage()或传入已有的窗口对象),避免出现无意义的空白窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:46:00