当前位置: 首页 > 知识库问答 >
问题:

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

米浩穰
2023-03-14

当我从JavaFXapplication类html" target="_blank">调用WindowController类的loadFXMLItemsAgain()方法时,绝对路径是正确的,但我在WindowControllerTest(JUnit)中也这样做了,它导致基本模块.../DeliveryTool/...正在切换到.../DeliveryTool/DeliveryTool/...从而导致错误。

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

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

这里有一个指向项目结构的链接。

//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(没有这样的文件或目录)

null

.../Inteliji IDEA/Pizzagesch-ft/DeliveryTool/fxml/windows.fxml

共有1个答案

轩辕欣可
2023-03-14

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

 类似资料:
  • 当我在fxml的所有三个位置中引用一个文件时,它工作得很好。当我引用所有3个不同的图像与绝对路径,它的工作很好。但我不理解相对路径只针对少数文件的问题。有人能帮我做这个吗? 我也尝试用“file:”替换“@”,但没有帮助。

  • 问题内容: 所以这是我的程序,可以正常工作: 如您所见,我正在使用我要读取的文件的绝对路径: 当我尝试使用相对路径时会出现问题: 我收到一个错误: 文件usnumbers.txt与ScanSum.class文件位于同一目录中: 我该如何解决? 问题答案: 从哪个目录执行该类文件?(这将是相对路径的当前工作目录和基本目录。) 如果仅从eclipse启动应用程序,则项目目录将是工作目录,在这种情况下,

  • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置

  • 问题内容: 键入标题时,我注意到有关此问题的一些类似问题,但它们似乎不在PHP中。那么用PHP函数解决该问题的方法是什么? 待指定。 有什么好主意吗?谢谢。 问题答案: 试试这个: 这将给 和 和 和

  • 我有一个完全干净的项目,利用。一切都按计划进行。已加载SCSS文件,但字体路径失败。 错误消息: 资产/fonts/DIN/DIN\u替换\u粗体\u 1-webfont。ttf输入/~/css加载器?{“最小化”:false,“源映射”:false}/~/vue加载程序/库/样式编译器?{“vue”:true,“id”:“data-v-0312694b”,“scoped”:true,“hasIn

  • 主要内容:什么是当前工作目录,什么是绝对路径与相对路径,Python处理绝对路径和相对路径在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。 什么是当前工作目录 每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。 注意,虽然文件夹是目录的更新的名称,但当前工作目录(或当前目录)是标准术语,没有当前工作文件夹这种说法。 在 Python 中,利用 os.getcwd() 函数可以取得当前工作路径的字