JavaFX视频播放报错java.lang.IllegalAccessError的解决求助
JavaFX播放视频运行报错解决方案
核心问题
你的项目存在两个关键错误,直接导致了模块访问权限异常:
- JavaFX依赖版本不统一:
javafx-media用了18-ea+1版本,而javafx-controls和javafx-fxml用了13版本,跨版本的模块交互会触发权限限制 - 依赖groupId错误:
javafx-media使用了org.jfxcore,但标准JavaFX依赖的groupId应为org.openjfx,不同groupId的依赖会被视为独立模块,引发访问冲突
解决步骤
1. 统一JavaFX依赖配置
修改pom.xml,将所有JavaFX依赖的groupId改为org.openjfx,并使用同一稳定版本(推荐用LTS版本17或和原media版本接近的18):
<dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-media</artifactId> <version>18</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>18</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>18</version> </dependency> </dependencies>
2. 同步JDK版本(可选但建议)
JavaFX 13+建议使用JDK 11及以上版本,将pom.xml中的Java版本配置改为与JavaFX兼容的版本(比如17):
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties>
同时在VS Code命令面板中执行Java: Configure Java Runtime,确保项目使用的JDK版本与配置一致。
3. 配置VS Code运行方式
方式一:用Maven命令运行
在VS Code终端执行:
mvn clean javafx:run
方式二:用VS Code运行按钮启动
在项目的.vscode/launch.json文件中添加以下配置(没有该文件则新建):
{ "version": "0.2.0", "configurations": [ { "type": "java", "name": "JavaFX App", "request": "launch", "mainClass": "com.example.App", "vmArgs": "--module-path ${maven.dependency.classpath} --add-modules javafx.controls,javafx.fxml,javafx.media" } ] }
配置完成后点击运行按钮即可正常启动项目。
代码验证
你的App.java代码逻辑无问题,确保视频文件路径正确即可。也可以直接使用file:///前缀的路径格式:
String path = "file:///C:/Users/Justin/Videos/file_example_MP4_1920_18MG.mp4";
内容的提问来源于stack exchange,提问作者Stack Underflow
相关产品推荐
相关产品推荐

