微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javafx.fxml.LoadException & 未找到无效的 URL 或资源:我无法使用 FXMLLoader.load();

如何解决javafx.fxml.LoadException & 未找到无效的 URL 或资源:我无法使用 FXMLLoader.load();

我正在尝试加载一个文件 .fxml (MainWindowInterface.fxml),它是计算器的设计部分。因为我希望计算器作为一个新阶段(当我单击一个按钮时)弹出,而旧阶段也存在,所以我创建了另一个阶段和场景。当它尝试加载该文件时,它会给我“javafx.fxml.LoadException”和“无效的 URL 或资源未找到”错误。我输入了 url,但它永远不会停止给我这些错误

这是我的新窗口代码

@FXML
public void toCalc(ActionEvent actionEvent) {
    try {
        Parent root = FXMLLoader.load(getClass().getResource("MainWindowInterface.fxml"));
        Stage primaryStage = new Stage();
        Scene scene = new Scene(root);
        primaryStage.setTitle("Calculator");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    catch(Exception e) {
        e.printstacktrace();
    }
}

这是我的 .fxml 文件代码

    <?xml version="1.0" encoding="UTF-8"?>
<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>
<AnchorPane prefheight="610.0" prefWidth="460.0" stylesheets="@MainWindowStyle.css" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.MainWindowController">
    <children>
        <Pane layoutX="6.0" layoutY="37.0" prefheight="567.0" prefWidth="449.0" styleClass="mainPane">
            <children>
                <Pane layoutX="14.0" layoutY="14.0" prefheight="116.0" prefWidth="422.0" styleClass="highlight">
                    <children>
                        <Label fx:id="lblResult" alignment="CENTER_RIGHT" layoutX="20.0" layoutY="40.0" prefheight="42.0" prefWidth="383.0" text="0.0" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn7" layoutX="14.0" layoutY="137.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="7" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn8" layoutX="121.0" layoutY="137.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="8" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn9" layoutX="228.0" layoutY="137.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="9" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btnPlus" layoutX="336.0" layoutY="137.0" onMouseClicked="#onSymbolClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="39.0" layoutY="29.0" text="+" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn4" layoutX="15.0" layoutY="243.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="4" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn5" layoutX="122.0" layoutY="243.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="5" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn6" layoutX="229.0" layoutY="243.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="6" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btnMinus" layoutX="337.0" layoutY="243.0" onMouseClicked="#onSymbolClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="44.0" layoutY="29.0" text="-" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn1" layoutX="14.0" layoutY="349.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="1" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn2" layoutX="121.0" layoutY="349.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="2" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn3" layoutX="228.0" layoutY="349.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="3" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btnMultiply" layoutX="336.0" layoutY="349.0" onMouseClicked="#onSymbolClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="43.0" layoutY="37.0" text="*" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btnClear" layoutX="15.0" layoutY="455.0" onMouseClicked="#onSymbolClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="37.0" layoutY="29.0" text="C" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btn0" layoutX="122.0" layoutY="455.0" onMouseClicked="#onNumberClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="40.0" layoutY="29.0" text="0" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btnEquals" layoutX="229.0" layoutY="455.0" onMouseClicked="#onSymbolClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="39.0" layoutY="29.0" text="=" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
                <Pane fx:id="btnDivide" layoutX="337.0" layoutY="455.0" onMouseClicked="#onSymbolClicked" prefheight="100.0" prefWidth="100.0" styleClass="highlight">
                    <children>
                        <Label layoutX="45.0" layoutY="29.0" text="/" textFill="WHITE">
                            <font>
                                <Font name="Arial" size="36.0" />
                            </font>
                        </Label>
                    </children>
                </Pane>
            </children>
        </Pane>
        <Pane fx:id="titlePane" prefheight="37.0" prefWidth="460.0">
            <children>
                <Button layoutX="398.0" layoutY="8.0" mnemonicParsing="false" style="-fx-background-color: transparent;">
               <graphic>
                        <FontAwesomeIconView fill="WHITE" glyphName="MINUS" />
               </graphic>
                </Button>
                <Button fx:id="btnClose" layoutX="420.0" layoutY="8.0" mnemonicParsing="false" onAction="#exit" style="-fx-background-color: transparent;">
               <graphic>
                        <FontAwesomeIconView fill="WHITE" glyphName="CLOSE" />
               </graphic>
                </Button>
                <Label layoutX="49.0" layoutY="11.0" text="Calcolatrice" textFill="WHITE" />
                <Button layoutX="14.0" layoutY="8.0" mnemonicParsing="false" style="-fx-background-color: transparent;">
               <graphic>
                        <FontAwesomeIconView fill="WHITE" glyphName="CIRCLE" />
               </graphic>
                </Button>
            </children>
        </Pane>
    </children>
</AnchorPane>

这是错误

    javafx.fxml.LoadException: 
/C:/Users/patri/IdeaProjects/AutofficinaBorgato/out/production/AutofficinaBorgato/sample/MainWindowInterface.fxml:176

    at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2603)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113)
    at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106)
    at sample.MenuController.toCalc(MenuController.java:89)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
    at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(UnkNown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
    at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
    at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1782)
    at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventdispatcher.dispatchBubblingEvent(CompositeEventdispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8879)
    at javafx.controls/javafx.scene.control.Button.fire(Button.java:200)
    at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)
    at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler$normalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventdispatcher.dispatchBubblingEvent(CompositeEventdispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventdispatcher.dispatchEvent(BasicEventdispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventdispatchChainImpl.dispatchEvent(EventdispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3851)
    at javafx.graphics/javafx.scene.Scene$MouseHandler.access$1200(Scene.java:3579)
    at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1849)
    at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2588)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:397)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:434)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:390)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:433)
    at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.IllegalArgumentException: Can not set javafx.scene.image.ImageView field sample.MainWindowController.btnClose to javafx.scene.control.Button
    at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
    at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
    at java.base/jdk.internal.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
    at java.base/java.lang.reflect.Field.set(Field.java:793)
    at javafx.fxml/javafx.fxml.FXMLLoader.injectFields(FXMLLoader.java:1174)
    at javafx.fxml/javafx.fxml.FXMLLoader.access$1600(FXMLLoader.java:105)
    at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processValue(FXMLLoader.java:865)
    at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processstartElement(FXMLLoader.java:759)
    at javafx.fxml/javafx.fxml.FXMLLoader.processstartElement(FXMLLoader.java:2722)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2552)
    ... 70 more

Process finished with exit code 0

如果你想知道路径: projectPath

我已经尝试了所有方法,例如将文件放入目录并更改路径或使用绝对/相对路径,但对我来说没有任何效果。我读到这可能是由一些未导入的库引起的,但正如您所看到的,我已经导入了所有库。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。