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

升级至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)配置方式

  1. 右键项目 → Run As → Run Configurations
  2. 切换到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
  3. 点击Apply后运行项目即可。

3. 检查IDE的构建路径配置

你提到已经添加了javafx.media.jar,但要确保是添加到Modulepath而非Classpath:

  1. 右键项目 → Build Path → Configure Build Path
  2. 切换到Libraries标签页,移除之前可能加到Classpath里的JavaFX jar包
  3. 点击Add Library → 选择JavaFX SDK → 浏览到你的JavaFX SDK目录,勾选javafx.media和javafx.controls模块
  4. 点击Finish并应用配置

额外验证点

  • 确保JavaFX SDK版本和JDK版本匹配(你用的JDK13对应JavaFX13是完全兼容的)
  • 待类加载问题解决后,再检查视频文件的路径是否正确(比如ClassLoader.getSystemResource是否能正确找到test/videoplayback.mp4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:08:04