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

JavaFX中getResource()报Location未设置错误,求解决方案

解决JavaFX getResource() "Location is not set" 问题

这个报错本质是getResource("song.fxml")没找到目标文件,返回了null,导致FXMLLoader的位置未正确设置。结合你的项目结构(标准Maven/Gradle目录结构,src/main/java下有controller包、src/main/resources为资源目录),给你几个针对性解决步骤:

1. 修正FXML文件路径

如果song.fxml放在src/main/resources根目录,必须用根路径开头的写法:

FXMLLoader loader = new FXMLLoader(getClass().getResource("/song.fxml"));

如果song.fxml放在src/main/resources/controller目录(和你的当前类同包),可以保留原写法,但要确认文件确实在该位置。

2. 检查构建工具的资源配置

  • Maven:确保pom.xml里有正确的resources配置,保证资源文件能被编译到classes目录:
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.fxml</include>
                <include>**/*.css</include>
                <include>**/*.png</include>
            </includes>
        </resource>
    </resources>
</build>
  • Gradle:默认会处理resources目录,若为自定义结构,需在build.gradle中配置:
sourceSets {
    main {
        resources {
            srcDirs = ["src/main/resources"]
        }
    }
}

3. 排查细节问题

  • 文件名大小写:比如代码里写song.fxml,实际文件是Song.fxml?Linux/macOS系统对路径大小写敏感,必须完全匹配。
  • 清理重建项目:IDE可能存在缓存问题,执行clean操作后重新build项目,确保资源文件被正确复制到输出目录。
  • 直接检查输出目录:前往项目的target/classes(Maven)或build/classes/java/main(Gradle)目录,查看是否存在song.fxml,且位置与代码中的路径对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:52:35