我在加载文件时遇到问题。我正在尝试使用以下代码加载场景“ 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
这可能是一个愚蠢的错误,但是我已经坚持了很长时间。...我几乎可以确定它与“ /”有关,但是我修复它的所有尝试都失败了……>
提前谢谢
编辑:
这里是完整的记录
修改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 / ,它可以工作,但实际上这种解决方案并不令人满意>
答案 0 :(得分:0)
默认情况下,您的资源文件夹应位于projectName/src/main/resources
下。
因此,您的情况是:C:\Users\pierr\Desktop\Yves\src\main\resources\areaView.fxml
。
在这种情况下,.getResource("areaView.fxml")
就足够了。
请记住,如果将fxml移到另一个文件夹,或者从与getResource
不同的文件夹调用src/main/java
,则必须更改传递给该方法的相对路径。