首页 > 解决方案 > FXMLLoader 不从 JUnitTest 加载(相对路径问题)

问题描述

当我从我的 JavaFXAplication 类调用 WindowController 类的 loadFXMLItemsAgain() 方法时,绝对路径是正确的,但我在 WindowControllerTest (JUnit) 中执行相同操作会导致绝对路径错误基本模块 .../deliverytool/。 .. 正在切换到 .../deliverytool/deliverytool/... 这会导致错误。

我只希望绝对路径与 JavaFXApplication 中的相同,我 100% 不知道这是从哪里来的。

我试图通过使用 getClass.getRessource() 来修复它,这是一个更严重的混乱:它在两种情况下都停止工作。

这是项目结构的链接。

//The method in WindowController:
public void loadFXMLItemsAgain() throws IOException {
        FXMLLoader loader = new FXMLLoader(new File("deliverytool/Fxml/Window.fxml").toURI().toURL());
        if (loader.getController() == null) {
            loader.setController(this);
        }
        pane = loader.load();
    }
//The way the method is called in JavaFXApplication
@Override
    public void start(Stage primaryStage) throws Exception {
        WindowController controller = new WindowController();
        controller.setVerw(verw);
        controller.setVerwk(verwk);
        controller.loadFXMLItemsAgain();
        primaryStage.setTitle("Deliverytool");
        controller.init(primaryStage);
        controller.show();
        ...
    }
//The way the method is called in WindowControllerTest JUnit Test Class
public class WindowControllerTest {
    WindowController controller = new WindowController();
@BeforeEach
    public void init() throws IOException {
        controller.loadFXMLItemsAgain();
    }
...
}

java.io.FileNotFoundException: .../Inteliji IDEA/pizzagesch-ft/deliverytool/deliverytool/Fxml/Window.fxml(没有这样的文件或目录)

应该:

.../Inteliji IDEA/pizzagesch-ft/deliverytool/Fxml/Window.fxml

标签: javahibernatemavenjavafx

解决方案


确保“JavaFXApplication”和“WindowControllerTest JUnit Test Class”都在同一个文件夹中。
后者似乎已经在“/deliverytool”文件夹中。


推荐阅读