java - 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
解决方案
确保“JavaFXApplication”和“WindowControllerTest JUnit Test Class”都在同一个文件夹中。
后者似乎已经在“/deliverytool”文件夹中。
推荐阅读
- javascript - HTML 和 JS 的输入和输出
- android - 如何保存在内部存储中录制的音频
- model-view-controller - 如何在web api中使用join并显示两个表数据
- javascript - 带有 Javascript 的 Youtube 数据 API:直接上传视频
- android - 带有 MaterialDrawer 的汉堡包图标
- php - PHP/SQL 脚本意外停止,在调试中工作
- ruby-on-rails - 使用“find_by”和类似方法时,我的 Ruby on Rails 应用程序如何连接到数据库?
- sql - 正则表达式负前瞻不排除所需的字符串
- ios - 在图像上添加文本,例如在 WhatsApp 和 facebook 中创建状态
- scala - 如何修复 Scala (2.11) 中路径相关类型的类型不匹配错误?