classnotfound异常,但一切看起来都正确。有人可以告诉我,我的开始功能是否错误?

时间:2018-06-08 18:34:38

标签: java fxml classnotfoundexception

这是我主要课程中的开始功能:

public void start(Stage primary) {
    stage = primary;

    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(getClass().getResource("UserInterface.fxml"));
    try {
        Parent root = (Parent) loader.load();
        Scene scene = new Scene(root);
        primary.setScene(scene);
    }catch( Exception e) {
        e.printStackTrace();
    }
}

错误:

javafx.fxml.LoadException: 
/C:/Users/micha/eclipse-workspace/woolard2/bin/masterfile/UserInterface.fxml

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2848)
at javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2692)
at javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2661)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2517)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at masterfile.Main.start(Main.java:42)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:748)

Caused by: java.lang.ClassNotFoundException
at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2899)
at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2846)
... 15 more

当我在“尝试”中注释掉所有内容时,一切正常并且编译,但是当我尝试将加载设置为root时,它会中断。

所以它是成功找到文件,但是因为找不到类而无法加载,但它与类和所有内容在同一文件夹中....有人可以帮助我

edit- UserInterface.fxml -

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.Scene?>

<Scene xmlns:fx="http://javafx.com/fxml/1" fx:controller="model.UserController.java">

</Scene>

1 个答案:

答案 0 :(得分:2)

在您的FXML中,您已将grep -r "Directory" /etc/httpd/ 属性定义为fx:controller。但是,您的类不是model.UserController.java,这是源文件的名称,类名是UserController.java。修改您的FXML以使用UserController