JavaFX SceneBuilder 2相对路径异常

JavaFX SceneBuilder 2相对路径异常,java,javafx,scenebuilder,Java,Javafx,Scenebuilder,我正在使用SceneBuilder构建javaFX应用程序,问题是,当我在fxml文件中指定相对路径时,它会在运行时引发异常: null/../images/text_formal.png javafx.fxml.LoadException: unknown path:13 at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source) at javafx.fxml.FXMLLoader.loadImpl(Unknown So

我正在使用SceneBuilder构建javaFX应用程序,问题是,当我在fxml文件中指定相对路径时,它会在运行时引发异常:

null/../images/text_formal.png
javafx.fxml.LoadException: 
unknown path:13

at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at com.graduation.project.fxml.manager.FXMLManager.<init>(FXMLManager.java:26)
at com.graduation.project.Main.start(Main.java:14)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$163(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$176(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$174(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$149(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or        resource not found
at javafx.scene.image.Image.validateUrl(Unknown Source)
at javafx.scene.image.Image.<init>(Unknown Source)
at com.sun.javafx.fxml.builder.JavaFXImageBuilder.build(Unknown Source)
at com.sun.javafx.fxml.builder.JavaFXImageBuilder.build(Unknown Source)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(Unknown Source)
at javafx.fxml.FXMLLoader.processEndElement(Unknown Source)
... 13 more

当您从流中加载时,FXMLLoader不知道如何解析相对路径,因为没有关于流的相对位置的概念。相反,在FXML管理器中,FXML来自:

不要这样做:

this.root = (Parent) this.fxmlLoader.load(getURL("/fxml/" + stageFXMLName).openStream());
相反,请执行以下操作:

this.root = (Parent) this.fxmlLoader.load();

Gluon提供了一个比Oracle提供的SceneBuilder 2更高的版本,您可能希望使用Gluon版本。请编辑您的问题,将用于加载FXML文件的代码包括在内。@jewelsea谢谢我会尝试的请检查编辑FXML管理器是什么?这不是一个JavaFX核心类。很难就不存在的代码提供建议。
FXMLManager manager = new FXMLManager(FXMLConstants.MAIN_SCREEN);
//manager.getController(MainScreen.class).setUp();
Stage stage = manager.getStage("test");
stage.show();
this.root = (Parent) this.fxmlLoader.load(getURL("/fxml/" + stageFXMLName).openStream());
this.root = (Parent) this.fxmlLoader.load();