1. FXMLLoader.load() 问题
具体代码如下:
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("login.fxml"));
stage.setScene(new Scene(root, 580, 400));
stage.show();
}
具体项目结构如图所示:
可以看见就是很简单的读取fxml文件,然后展示即可。
结果,我遇到了空指针异常,提示无法找到对于文件,于是乎我根据网上教程各种修改,大概有以下几种方式:
//方法一
Parent root = FXMLLoader.load(getClass().getResource("/login.fxml"));
//方法二
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("login.fxml"));
//方法三
Parent root = FXMLLoader.load(getClass().getResource("/fxml/login.fxml"));
//....等等基本上网上的路径我都试过了
最后看了这篇文章解决了:Maven + Java FX出现问题:Caused by: java.lang.NullPointerException: Location is required.
修改后应该为:
Parent root = FXMLLoader.load(getClass().getResource("/static/fxml/login.fxml"));
其实是因为编译后,项目实际运行时会从target目录中读取文件,所以路径应该对应target中的具体路径。
在修改过程中,我觉得自己就在正确的大门旁边,最后改正确也挺开心的,不过这个错误确实很小,但真的很难改(因为是初学菜鸟罢了)。