Maven环境下JavaFX加载FXML文件时getResource返回Null的问题求助
Maven环境下JavaFX加载FXML文件时getResource返回Null的问题求助
大家好,我目前在IntelliJ IDEA中使用Maven开发JavaFX应用,但在通过代码加载FXML文件时遇到了棘手的问题。当我尝试用FXMLLoader加载pago-view.fxml时,getResource方法返回了null,直接导致文件无法正常加载。
文件位置说明
我的pago-view.fxml文件存放在src/main/resources/co/edu/javeriana/proyectobdd/目录下。
控制器中的加载代码
下面是CompraController里尝试加载FXML的方法:
public class CompraController { @FXML protected void pagar() throws Exception { System.out.println(getClass().getResource("/co/edu/javeriana/proyectobdd/pago-view.fxml")); AnchorPane pane = FXMLLoader.load(getClass().getResource("/co/edu/javeriana/proyectobdd/pago-view.fxml")); }}
运行System.out.println这行代码时,输出结果是null,说明类路径中找不到这个路径对应的文件。
项目结构
src/main/java:包含所有Java类,其中就有CompraControllersrc/main/resources:存放FXML文件,具体结构为src/main/resources/co/edu/javeriana/proyectobdd/pago-view.fxml
Maven配置情况
我的pom.xml里已经引入了JavaFX的Maven插件:
<plugin> <groupId>org.openjfx</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>0.0.8</version> <configuration> <mainClass>co.edu.javeriana.proyectobdd.HelloApplication</mainClass> </configuration> </plugin>
同时我也添加了资源文件的配置,确保FXML文件能被正确复制到编译目录:
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.fxml</include> </includes> </resource> </resources> </build>
已尝试的操作
执行mvn clean package后,我确认pago-view.fxml已经出现在target/classes/co/edu/javeriana/proyectobdd/pago-view.fxml目录下,但FXMLLoader仍然找不到它。
除此之外,我还做了这些尝试:
- 确认IntelliJ中已经把
src/main/resources设置为资源文件夹 - 使用
mvn javafx:run命令运行项目,确保类路径配置正确 - 尝试了两种路径写法:带开头斜杠的
/co/edu/javeriana/proyectobdd/pago-view.fxml和不带斜杠的co/edu/javeriana/proyectobdd/pago-view.fxml
求助问题
我该如何确保FXML文件在类路径中,并且让FXMLLoader能正确找到它?Maven或者IntelliJ中还有什么我没注意到的配置项吗?
备注:内容来源于stack exchange,提问作者Juan Felipe Rubiano
相关产品推荐
相关产品推荐

