FXMLLoader无法从JUnitTest加载(相对路径问题)

时间:2019-06-09 09:14:19

标签: java hibernate maven javafx

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

我只希望绝对路径与JavaFXApplication中的绝对路径相同,并且我不知道它的来源是100%。

我试图通过使用getClass.getRessource()来修复它,这甚至更糟了:在两种情况下都停止工作。

这里是指向Project Structure的链接。

//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

1 个答案:

答案 0 :(得分:0)

确保“ JavaFXApplication”和“ WindowControllerTest JUnit测试类”都位于同一文件夹中。
后者似乎已经在'/ deliverytool'文件夹中。