【问题标题】:FXMLLoader doesn't load from JUnitTest (relative Path Problem)FXMLLoader 不从 JUnitTest 加载(相对路径问题)
【发布时间】:2019-06-09 09:14:19
【问题描述】:

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

【问题讨论】:

    标签: java hibernate maven javafx


    【解决方案1】:

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

    【讨论】:

    • 遗憾的是这是不可能的,因为测试位于指定的测试文件夹中,如 maven 项目结构和许多其他项目中指定的。
    • 感谢您对项目结构进行编辑。尝试在“deliverytool”之前添加“./”以确保它用于更正开始的相对路径。 FXMLLoader loader = new FXMLLoader(new File("./deliverytool/Fxml/Window.fxml").toURI().toURL());
    • 我试过但我得到:java.io.FileNotFoundException: /Users/Jannik/Documents/Inteliji IDEA/pizzagesch-ft/deliverytool/./deliverytool/Fxml/Window.fxml(没有这样的文件或目录)
    • 我发现这是关于类路径的 Intelijis 定义,如果我在运行配置中更改它会更改它,有人知道如何通过 Maven 更改类路径吗?
    猜你喜欢
    • 2011-06-29
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2023-04-01
    • 2014-05-09
    • 2016-01-08
    相关资源
    最近更新 更多