JavaFX中FXMLLoader加载FXML文件返回null的问题求助
解决FXML加载返回Null的问题
针对你遇到的FXMLLoader.load()返回null、找不到FXML文件的问题,按以下步骤排查:
检查路径大小写匹配
代码中路径写的是/view/Main_Form.fxml,但你的包名是大写的View,Java资源路径严格区分大小写(尤其是非Windows系统)。把路径改成/View/Main_Form.fxml再测试。确认资源根配置生效
确保View所在的父目录确实被标记为资源根:- 在IDEA中右键对应目录 →
Mark Directory as→Resources Root - 编译项目后,去输出目录(比如
target/classes或out/production/resources)查看,是否存在View/Main_Form.fxml文件。如果没有,说明资源未被正确复制。
- 在IDEA中右键对应目录 →
调整构建工具配置(如果用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'] } } }
- Maven:在
换用类加载器加载资源
尝试用类加载器的方式获取资源,避免类路径的斜杠问题:Parent root = FXMLLoader.load(HelloApplication.class.getClassLoader().getResource("View/Main_Form.fxml"));类加载器的
getResource()路径是从classpath根开始,不需要开头的斜杠。核对文件名拼写
再次确认FXML文件名是Main_Form.fxml,没有拼写错误(比如下划线遗漏、大小写错误)。
内容的提问来源于stack exchange,提问作者Des
相关产品推荐
相关产品推荐

