当我从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

最佳答案

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

07-26 01:10