【发布时间】:2019-08-09 01:21:28
【问题描述】:
我有一个具有这种结构的项目:
我尝试使用以下代码从 Main 类加载 sample.fxml:
Parent root = FXMLLoader.load(Main.class.getResource("../../submodule/src/java/sample.fxml"));
但它不起作用。 sample.fxml 文件代码为:
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>
问题是 FXML 加载器找不到这个位置。如何解决?
【问题讨论】:
-
将 FXML 文件移动到 resources 目录中。然后使用
getClass().getResource("/sample.fxml")应该可以工作——假设两个模块在运行时都在类路径上。 -
@Slaw 不幸的是它没有帮助。
-
你的项目结构看起来有点奇怪。您的主模块是 Maven 父模块吗?
-
模块与否:class.getResource(...) 不支持 ".." - 实际上,我不明白为什么每个人似乎都认为它确实如此 - 只需阅读 api 文档,你没有看到什么;)
标签: java javafx fxml fxmlloader