我的 JavaFX 应用程序需要能够找到 FXML 文件以加载它们FXMLLoader,以及样式表(CSS 文件)和图像。当我尝试加载这些时,我经常遇到错误,或者我尝试加载的项目在运行时根本没有加载。
对于 FXML 文件,我看到的错误消息包括
Caused by: java.lang.NullPointerException: location is not set
Run Code Online (Sandbox Code Playgroud)
对于图像,堆栈跟踪包括
Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found
Run Code Online (Sandbox Code Playgroud)
如何找出这些资源的正确资源路径?
我的项目在eclipse中正常运行但是当我创建这个项目的jar文件并尝试通过cmd运行时,它显示"Location not set set"错误.
我的项目结构是:
方法是(在eclipse中运行):
@FXML
private void RegularCustomer(ActionEvent event) throws Exception{
Stage stage = (Stage) dailySales.getScene().getWindow();
Scene scene = dailySales.getScene();
FXMLLoader loader = new FXMLLoader(getClass().getResource("../customer/CustomerHome.fxml"));
System.out.println(loader.getLocation());
scene.setRoot(loader.load());
stage.setScene(scene);
stage.show();
}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题?
有一些相关问题,但它们有所不同.他们的代码不在IDE中运行,但我的代码在IDE中运行.
仅供参考:我对文件夹结构进行了一些更改,并且能够成功运行.但是这种结构很糟糕,因为我把所有的FXML文件和控制器放在同一个包中.