升级至JDK 13与JavaFX 13后Media类找不到的问题求助
解决JavaFX 13中找不到
javafx.scene.media.Media类的问题 这个问题我之前帮朋友排查过类似的,核心原因是JavaFX从JDK11开始完全模块化了,javafx.media是一个独立的模块,只把jar包加到构建路径是不够的,JVM的模块系统会限制对它的访问。下面给你几个可行的解决方法:
1. 转为模块化项目(推荐方案)
JavaFX官方推荐使用模块化方式开发,步骤很简单:
- 在项目的根包下创建
module-info.java文件,内容如下:module test { requires javafx.controls; requires javafx.media; exports test; } - 解释:
requires javafx.media明确声明你的模块依赖media模块,这样JVM就能正确识别并加载Media、MediaPlayer等相关类了;exports test是把你的主类所在的包暴露给JavaFX框架,确保启动时能找到你的应用类。
2. 非模块化项目(通过VM参数配置)
如果不想改成模块化项目,你需要在运行时给JVM添加模块路径和模块依赖参数:
命令行运行方式
假设你的JavaFX SDK安装在D:\javafx-sdk-13\lib,运行命令如下:
java --module-path D:\javafx-sdk-13\lib --add-modules javafx.controls,javafx.media test.main
IDE(Eclipse)配置方式
- 右键项目 → Run As → Run Configurations
- 切换到Arguments标签页,在VM arguments里添加:
示例:--module-path "你的JavaFX SDK的lib目录路径" --add-modules javafx.controls,javafx.media--module-path "D:\javafx-sdk-13\lib" --add-modules javafx.controls,javafx.media - 点击Apply后运行项目即可。
3. 检查IDE的构建路径配置
你提到已经添加了javafx.media.jar,但要确保是添加到Modulepath而非Classpath:
- 右键项目 → Build Path → Configure Build Path
- 切换到Libraries标签页,移除之前可能加到Classpath里的JavaFX jar包
- 点击Add Library → 选择JavaFX SDK → 浏览到你的JavaFX SDK目录,勾选
javafx.media和javafx.controls模块 - 点击Finish并应用配置
额外验证点
- 确保JavaFX SDK版本和JDK版本匹配(你用的JDK13对应JavaFX13是完全兼容的)
- 待类加载问题解决后,再检查视频文件的路径是否正确(比如
ClassLoader.getSystemResource是否能正确找到test/videoplayback.mp4)
内容的提问来源于stack exchange,提问作者Behy
相关产品推荐
相关产品推荐

