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

JavaFX加载FXML文件报错Location is not set,求解决方案

解决JavaFX "Location is not set" 错误

这个错误的核心问题是FXMLLoader找不到你的FXML文件,根源出在资源路径的写法上。我帮你分析一下问题并给出解决方案:

问题所在

你的代码里写了:

FXMLLoader loader = new FXMLLoader(MainApp.class.getResource("/resources/RootLayout.fxml"));

但根据你的文件结构,resources目录是类路径的根目录(构建工具比如Maven/Gradle会自动把这个目录下的文件打包到类路径根),所以RootLayout.fxml的实际类路径是/RootLayout.fxml,而不是/resources/RootLayout.fxml——你多写了一层/resources/前缀,导致FXMLLoader去类路径下找不存在的resources子目录,自然找不到文件。

解决方案

直接修正资源路径,去掉多余的/resources/前缀:

1. 修改initRootLayout方法

把加载RootLayout的代码改成:

final FXMLLoader loader = new FXMLLoader(MainApp.class.getResource("/RootLayout.fxml"));

2. 修改showFilmeOverview方法

同样,把加载FilmeOverview的代码改成:

final FXMLLoader loader = new FXMLLoader(MainApp.class.getResource("/FilmeOverview.fxml"));

额外排查点(如果修改后还是报错)

  • 确认构建工具是否正确复制了FXML文件:检查项目的输出目录(比如target/classes或build/classes)里有没有RootLayout.fxml和FilmeOverview.fxml,如果没有,需要调整构建配置确保resources目录下的文件被正确打包。
  • 检查文件名大小写:Java的资源查找是区分大小写的,确保代码里的文件名和实际文件完全一致(比如不要写成rootlayout.fxml而实际是RootLayout.fxml)。
  • 也可以尝试相对路径:如果你的MainApp在projeto包下,相对路径写法是MainApp.class.getResource("../RootLayout.fxml"),但绝对路径(开头带/)更可靠,推荐优先使用。

这样修改后,FXMLLoader就能正确找到你的FXML文件,解决"Location is not set"的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:24