繁体   English   中英

场景生成器 JavaFX 打开 FXML 文件时出错

[英]Scene Builder JavaFX Error opening FXML file

我正在制作一个项目并设计 FXML,但有一点我遇到了这个错误

路径错误:

1

不知道怎么配置

我的 FXMLMain.fxml 代码是:

    <center>
    <Pane fx:id="pneDashboard" prefHeight="320.0" prefWidth="800.0">
        <children>
            <fx:include source="/javafxapplication1/TempratureTab/FXMLTempraturetab.fxml" />
        </children>
    </Pane>
</center>

这是主要的错误描述:

引起:java.io.FileNotFoundException: javafxapplication1\\TempratureTab\\FXMLTempraturetab.fxml(系统找不到指定的路径)

我的包结构是

|--->源码包

   |--->javafxapplication1

         |--->FXMLMain.fxml

         |--->TempratureTab(folder)

               |--->FXMLtempraturetab.fxml
                  

如果有人能帮我解决这个问题

我什至在不同的操作系统和不同的 Netbeans IDE 版本上尝试过

有趣的事实是它完美地执行......

在编辑模式下,该行没有显示错误..

仅在 SceneBuilder 中。

根据这个(粗体是我的):

<fx:include>标签从另一个文件中定义的 FXML 标记创建一个对象。 它的用法如下<fx:include source="filename"/>其中 filename 是要包含的 FXML 文件的名称。 以前导斜杠字符开头的值被视为相对于类路径 没有前导斜杠的值被视为相对于当前文档的路径。

当您运行应用程序时,您的项目显然在类路径中,这是:

<fx:include source="/javafxapplication1/TempratureTab/FXMLTempraturetab.fxml" />

将被解析为有效的 URL:

"file:/<full-path-of-your-project>/javafxapplication1/TempratureTab/FXMLTempraturetab.fxml"

但是当您使用 Scene Builder 打开 FXML 时,它不知道您的项目,因此无法将其添加到类路径中。 尝试绝对路径将抛出java.io.FileNotFoundException ,因为 FXMLLoader 找不到该文件,因为它将该路径解析为:

"file:javafxapplication1/TempratureTab/FXMLTempraturetab.fxml"

这不是一个有效的 URL。

虽然在运行应用程序时相对路径和绝对路径都有效,但为了从 Scene Builder 打开 FXML 文件,您必须使用相对路径:

<fx:include source="TempratureTab/FXMLTempraturetab.fxml" />

我遇到了同样的问题,经过数小时的反复试验,这里对我有用:

  • IntelliJ 2020.1、JFX 15 + OpenJDK 15、Gradle 6.7、SceneBuilder 11.0

  • 我做了一个 Gradle 项目

  • 我尝试了一个基本的包配置: 在此处输入图片说明

  • 起初,当单击z.fxml “SceneBuilder”选项卡时,它抛出: java.io.FileNotFoundException

  • 我使用 Gradle [build]作为我的配置

  • 再次尝试 SceneBuilder 选项卡:现在工作。 看起来(我猜) [build]更新了类路径(也许听起来很明显,我是 Gradle 和构建工具的新手,所以这就是为什么我没有尝试使用[build]之前)

  • 除上述之外,我不断遇到当我使用 SceneBuilder 作为独立导入 FXML 文件时它不起作用(可能是一个错误?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM