首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我读错了,找不出解决办法。为什么我要得到一个"javafx.fxml.LoadException"?

我读错了,找不出解决办法。为什么我要得到一个"javafx.fxml.LoadException"?
EN

Stack Overflow用户
提问于 2022-08-04 07:28:22
回答 1查看 137关注 0票数 0

当我使用java 18在eclipse中运行以下代码时,会得到一个错误。请帮帮忙。fxml是使用场景生成器生成的。我读错了,但我不明白解决办法。在Main.fxml中,他认为在第9行之前一切都很好。

我用这段视频作为参考。https://youtu.be/N3LZM4WFHBY?list=PLZPZq0r_RZOM-8vJA3NQFZB7JroDcMwev

Main.java:

代码语言:javascript
运行
复制
package application;
    
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("Main.fxml"));
            Scene scene = new Scene(root);
            primaryStage.setResizable(false);
            
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}

Controller.java:

代码语言:javascript
运行
复制
package application;

import java.awt.event.ActionEvent;

public class Controller {
    
    public void up(ActionEvent e) {
        System.out.println("UP");
    }   
    public void down(ActionEvent e) {
        System.out.println("DOWN");
    }   
    public void right(ActionEvent e) {
        System.out.println("RIGHT");
    }   
    public void left(ActionEvent e) {
        System.out.println("LEFT");
    }
    
}

Main.fxml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>

<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>


<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">
   <children>
      <Button layoutX="286.0" layoutY="14.0" mnemonicParsing="false" onAction="#up" text="UP" />
      <Button layoutX="536.0" layoutY="188.0" mnemonicParsing="false" onAction="#right" text="RIGHT" />
      <Button layoutX="273.0" layoutY="361.0" mnemonicParsing="false" onAction="#down" text="DOWN" />
      <Button layoutX="14.0" layoutY="188.0" mnemonicParsing="false" onAction="#left" text="LEFT" />
   </children>
</AnchorPane>

错误:

代码语言:javascript
运行
复制
javafx.fxml.LoadException: 
/C:/Users/suyak/eclipse-workspace/Message/bin/application/Main.fxml:9

    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:933)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:981)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:230)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:755)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2808)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2634)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3331)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3287)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3255)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3227)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3203)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3196)
    at FirstJavaFX/application.Main.start(Main.java:14)
    at javafx.graphics@18.0.2/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847)
    at javafx.graphics@18.0.2/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484)
    at javafx.graphics@18.0.2/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at javafx.graphics@18.0.2/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
    at javafx.graphics@18.0.2/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics@18.0.2/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics@18.0.2/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: Controller
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at javafx.fxml@18.0.2/javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:931)
    ... 22 more
EN

回答 1

Stack Overflow用户

发布于 2022-08-04 08:11:23

Slaw发布a comment

可以通过使用fx:controller="application.Controller" (控制器类的完全限定名)来解决这个问题,我相信,也可以通过在FXML文件中添加<?import application.Controller?>指令来解决。您还需要更改控制器类,以导入javafx.event.ActionEvent而不是AWT等价物(这与当前错误无关,但将防止将来发生错误)。

fx:controller="application.Controller"修复了它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73231897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档