JavaFX 位置未设置错误解决
创建 JAR 文件后尝试通过命令行运行 JavaFX 项目时,您可能会遇到“位置未设置”错误。在资源加载和本地化上下文中正确使用 getClass().getResource() 时会出现此问题。
方法 getClass().getResource() 旨在加载资源,而不是指定文件路径。虽然这在 IDE 中似乎可行,因为类加载器从文件系统解析它,但在使用 JAR 类加载器时可能会失败,因为 JAR 类加载器不以相同的方式实现资源解析。
解决方案 1:使用绝对资源路径
要解决此问题,请使用 / 分隔符指定 FXML 文件的绝对资源路径:
<code class="java">FXMLLoader loader = new FXMLLoader(getClass().getResource("/sm/customer/CustomerHome.fxml"));</code>
解决方案 2:使用控制器位置
或者,您可以利用代码组织并加载与其控制器相关的 FXML 文件:
<code class="java">FXMLLoader loader = new FXMLLoader(CustomerHomeCtrl.class.getResource("CustomerHome.fxml"));</code>
此方法与控制器和 FXML 的结构化打包保持一致文件并通过在移动 FXML 和控制器时自动更新导入语句来简化重构。
以上是如何解决从 JAR 运行时 JavaFX 中的“位置未设置”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!