【问题标题】:Scene Builder JavaFX Error opening FXML fileScene Builder JavaFX 打开 FXML 文件时出错
【发布时间】:2016-04-16 10:11:27
【问题描述】:

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

路径错误:

不知道怎么配置

我的 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 中。

【问题讨论】:

  • 您的文件中缺少 和导入。为了简化工作流程,您可以在 SceneBuilder 应用程序中设计第一个 xml 文件,然后您将获得正确生成的导入。这就是它的设计工作方式,以消除 xml 语法错误。
  • 我的每个 FXML 文件都是通过 NEW>Empty FXML 和 生成的,并且导入都在那里我还必须导入包....

标签: java javafx netbeans-8 scenebuilder


【解决方案1】:

根据this(粗体是我的):

&lt;fx:include&gt; 标记从另一个文件中定义的 FXML 标记创建一个对象。使用如下&lt;fx:include source="filename"/&gt; 其中 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" />

【讨论】:

  • 对不起@josé-pereda。那没有用...我已经尝试过我什至尝试过的最后一个代码spinet,包括 它也没有帮助...
  • 你不需要导入它。您可以尝试使用File-&gt;Include-&gt;FXML... 菜单吗?然后浏览并选择要包含的 FXML 文件。您使用的是哪个 Scene Builder 版本?
【解决方案2】:

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

  • 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 文件时它不起作用(可能是一个错误?)

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 2017-01-19
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2016-10-21
    相关资源
    最近更新 更多