无法加载javafx场景

时间:2018-09-22 00:35:29

标签: java javafx resources loading

我在加载文件时遇到问题。我正在尝试使用以下代码加载场景“ areaView.fxml”:

public class View extends Application {

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws IOException {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("/resources/areaView.fxml"));
        Parent root = loader.load();
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
}}

但是当我启动时,我会收到一个 InvocationTargetException

有关信息,我在Windows上,文件的绝对路径为: C:\ Users \ pierr \ Desktop \ Yves \ resources \ areaView.fxml

这可能是一个愚蠢的错误,但是我已经坚持了很长时间。...我几乎可以确定它与“ /”有关,但是我修复它的所有尝试都失败了……

提前谢谢

编辑:

这里是完整的记录

enter image description here

修改n°2

当我对此进行测试时,很奇怪:

 System.out.println(getClass().getResource("").toString());

我得到了:文件:/ C:/ Users / pierr / Desktop / Yves / out / production / Yves / view /

当我想到得到这个时:文件:/ C:/ Users / pierr / Desktop / Yves /

如果我将文件移到文件:/ C:/ Users / pierr / Desktop / Yves / out / production / Yves / view / ,它可以工作,但实际上这种解决方案并不令人满意

1 个答案:

答案 0 :(得分:0)

默认情况下,您的资源文件夹应位于projectName/src/main/resources下。

因此,您的情况是:C:\Users\pierr\Desktop\Yves\src\main\resources\areaView.fxml

在这种情况下,.getResource("areaView.fxml")就足够了。

请记住,如果将fxml移到另一个文件夹,或者从与getResource不同的文件夹调用src/main/java,则必须更改传递给该方法的相对路径。