当前位置: 首页 > 面试题库 >

NullPointerException加载fxml

锺霍英
2023-03-14
问题内容

我想在我的应用程序中加载一个fxml文件。我使用下一个代码:

try {
   FXMLLoader loader = new FXMLLoader();
   loader.setController(null);
   loader.setRoot(null);
   loader.setResources(ResourceBundle.getBundle(BUNDLE));
   Node root = null;
   root = (Node) loader.load(JfxUtils.class.getResource(fxml).openStream());
   return root;
} catch (IOException e) {
   throw new IllegalStateException("cannot load FXML screen", e);
}

使用一些fxml,一切正常,与其他人我得到此异常:

Caused by: java.lang.NullPointerException
    at javafx.fxml.FXMLLoader.equals(FXMLLoader.java:1856)
    at javafx.fxml.FXMLLoader.isCyclic(FXMLLoader.java:1868)
    at javafx.fxml.FXMLLoader.access$2100(FXMLLoader.java:71)
    at javafx.fxml.FXMLLoader$IncludeElement.constructValue(FXMLLoader.java:941)
    at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:570)
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2356)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2172)

我不明白为什么会收到这个例外。

谢谢。

编辑: 添加包括示例:

我的父母fxml

<fx:root type="javafx.scene.layout.AnchorPane" fx:id="scrollPane" id="scrollStocksList"
    xmlns:fx="http://javafx.com/fxml"
    fx:controller="net.StocksListRunningController">
    <fx:include fx:id="tableListStock"
        source="/fxml/stocksList.fxml" />
</fx:root>

我的包含文件:

<fx:root type="javafx.scene.layout.VBox" xmlns:fx="http://javafx.com/fxml"
    fx:controller="net.StockListTableController">
    <TableView fx:id="stocksList" onMouseClicked="#openDetail">
        <columns>
            <TableColumn text="Titre" prefWidth="125">
                <cellValueFactory>
                    <PropertyValueFactory property="title" />
                </cellValueFactory>
            </TableColumn>
            <TableColumn text="Quantité" prefWidth="75" fx:id="quantityColumn">
                <cellValueFactory>
                    <PropertyValueFactory property="quantity" />
                </cellValueFactory>
            </TableColumn>
            <TableColumn text="Prix unitaire" prefWidth="100">
                <cellValueFactory>
                    <PropertyValueFactory property="unitPrice" />
                </cellValueFactory>
            </TableColumn>
            <TableColumn text="Prix total" prefWidth="120">
                <cellValueFactory>
                    <PropertyValueFactory property="price" />
                </cellValueFactory>
            </TableColumn>
            <TableColumn text="Sens" prefWidth="50">
                <cellValueFactory>
                    <PropertyValueFactory property="direction" />
                </cellValueFactory>
            </TableColumn>
            <TableColumn text="Date d'achat" prefWidth="100">
                <cellValueFactory>
                    <PropertyValueFactory property="date" />
                </cellValueFactory>
            </TableColumn>
            <TableColumn text="Jours écoulés" prefWidth="100">
                <cellValueFactory>
                    <PropertyValueFactory property="dayRunning" />
                </cellValueFactory>
            </TableColumn>
        </columns>
    </TableView>
</fx:root>

问题答案:

这是解决方案。

为加载程序添加以下行:

loader.setLocation(JfxUtils.class.getResource(fxml));

非常糟糕的错误。



 类似资料:
  • 是的,我知道这个问题经常被问到,我使用了搜索功能,但不能解决我的问题与这些答案,现在我累了搜索谷歌或其他任何地方。 我的FXML文件在包de.toxiclab.jnotepad.layout中,这意味着Layout/main_layout.FXML中的路径是真实的,所以路径必须是正确的。 然后它给我打印了一个丑陋的例外: javafx.fxml.loadException:/j:/eclipse%

  • 我正在尝试创建javafx applet,使用IntelliJ idea。构建之后,我得到了三个文件:.jar、.jnlp和.html。如果我启动jar所有工作都很好,但是如果我尝试使用jnlp或html运行app,它会抛出异常: 为什么会这样?Jar正好包含所需的位于指定路径的fxml。 Java: FXML: 我做错了什么?请帮帮忙。

  • Docx4j源代码可在https://github.com/plutext/Docx4j获得。 异常跟踪: docx文档很好(由Word2010创建)。我甚至解压了它,看看是否有content_types.xml。就在那儿。

  • 在IntelliJ中(但在Eclipse IDE中没有)执行以下操作时,我得到了FXML加载器的NullPointerException

  • 我想为我的JavaFX应用程序设置一个控制器,它自动将FXML文件“view.FXML”加载到成员“父根”中,并接受构造函数参数(在本例中为“字符串消息”)。 我让它工作得很好,但后来我试图使用Spring实例化一个DemoController实例,我收到了一个“NullPointerException:Root不能为null”。这让我很恼火,因为使用Spring的bean实例化似乎工作得很好,但

  • 问题内容: 在上面指出的行中发现异常。无论语言是否是有效的属性文件,我都会在同一行上捕获相同的异常。 问题答案: 改成: