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

JavaFX中FXMLLoader加载FXML文件返回null的问题求助

解决FXML加载返回Null的问题

针对你遇到的FXMLLoader.load()返回null、找不到FXML文件的问题,按以下步骤排查:

  • 检查路径大小写匹配
    代码中路径写的是/view/Main_Form.fxml,但你的包名是大写的View,Java资源路径严格区分大小写(尤其是非Windows系统)。把路径改成/View/Main_Form.fxml再测试。

  • 确认资源根配置生效
    确保View所在的父目录确实被标记为资源根:

    1. 在IDEA中右键对应目录 → Mark Directory as → Resources Root
    2. 编译项目后,去输出目录(比如target/classes或out/production/resources)查看,是否存在View/Main_Form.fxml文件。如果没有,说明资源未被正确复制。
  • 调整构建工具配置(如果用Maven/Gradle)
    如果你的View包放在src/main/java目录下,默认构建工具不会把java目录下的FXML文件复制到classpath,需要额外配置:

    • Maven:在pom.xml中添加资源配置
      <build>
          <resources>
              <resource>
                  <directory>src/main/java</directory>
                  <includes>
                      <include>**/*.fxml</include>
                  </includes>
              </resource>
              <resource>
                  <directory>src/main/resources</directory>
              </resource>
          </resources>
      </build>
      
    • Gradle:在build.gradle中添加
      sourceSets {
          main {
              resources {
                  srcDirs = ['src/main/resources', 'src/main/java']
                  includes = ['**/*.fxml']
              }
          }
      }
      
  • 换用类加载器加载资源
    尝试用类加载器的方式获取资源,避免类路径的斜杠问题:

    Parent root = FXMLLoader.load(HelloApplication.class.getClassLoader().getResource("View/Main_Form.fxml"));
    

    类加载器的getResource()路径是从classpath根开始,不需要开头的斜杠。

  • 核对文件名拼写
    再次确认FXML文件名是Main_Form.fxml,没有拼写错误(比如下划线遗漏、大小写错误)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:15:57