Java 从与主应用程序不同的位置加载fxml资源

Java 从与主应用程序不同的位置加载fxml资源,java,javafx,load,fxml,Java,Javafx,Load,Fxml,这是我的目录树: 我无法从代码中的位置加载这些fxml 例如,在Main.java中 FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("MainInterface.fxml")); Scene scene = new Scene(loader.load()); primaryStage.setScene(scene); primaryStage.show(); 但这是一个错误: 线

这是我的目录树:

我无法从代码中的位置加载这些fxml

例如,在Main.java中

FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("MainInterface.fxml"));
Scene scene = new Scene(loader.load());
primaryStage.setScene(scene);
primaryStage.show();
但这是一个错误:

线程“main”java.lang.RuntimeException中出现异常。。。原因: java.lang.IllegalStateException:未设置位置

我该怎么做


谢谢大家。

尝试
Main.class.getResource(“/mainterface.fxml”)
(带前导的
/
),或者
Main.class.getClassLoader().getResource(“mainterface.fxml”)
。如果这些都不起作用,您的问题将显示生成文件夹的实际布局(而不是显示的源文件夹)。我不熟悉您的IDE,但我认为,
out
是构建文件夹。正如JamesD建议的那样,引导/应该在资源文件夹中工作,或者使用与您在src中相同的构建结构,并将fxml文件放在“相同”文件夹中目录作为加载该fxml的类with@JamesD为什么你从不把你的答案作为答案发布D@JohnRW因为在这种情况下,我不知道这是正确的答案,因为我不知道OP的构建场景。可能构建场景会导致一个包含FXML文件的
resources
包,在这种情况下,答案将不起作用。或者可能构建过程没有导出FXML文件(我相信IntelliJ有时会发生这种情况)。因为这个问题没有足够的信息,我不知道这是否是正确的答案。相信我,我会发帖的