当我从 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”文件夹中。
关于java - FXMLLoader 未从 JUnitTest 加载(相对路径问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56513354/