当前位置: 首页 > 知识库问答 >
问题:

JavaFX:java.lang.ClassNotFoundException(即使scenebuilder找到控制器)

谢阳曜
2023-03-14

我寻找我的问题,但没有找到一个有效的解决办法。

我目前正在尝试用JavaFx编写一个应用程序,并尝试为FXML文件加载控制器,但即使SceneBuilder找到了它,Eclipse没有找到。

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.ScrollBar?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<AnchorPane fx:id="homeScreenAnchorPane" prefHeight="544.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.GlobalVueController">
   <children>
      <ListView fx:id="listView" layoutY="116.0" prefHeight="431.0" prefWidth="685.0" />
      <ScrollBar layoutX="686.0" layoutY="116.0" orientation="VERTICAL" prefHeight="431.0" prefWidth="14.0" />
      <ButtonBar layoutX="14.0" layoutY="14.0" prefHeight="40.0" prefWidth="458.0">
         <buttons>
            <TextField fx:id="searchBar" prefHeight="26.0" prefWidth="491.0" />
         </buttons>
      </ButtonBar>
      <Button fx:id="addButtonHS" layoutX="502.0" layoutY="14.0" mnemonicParsing="false" prefHeight="40.0" prefWidth="75.0" text="Add" />
      <Button fx:id="supprButtonHS" layoutX="611.0" layoutY="14.0" mnemonicParsing="false" prefHeight="40.0" prefWidth="75.0" text="Suppr" />
      <Label layoutX="14.0" layoutY="74.0" text="Flitrer par groupe :">
         <font>
            <Font size="18.0" />
         </font>
      </Label>
      <ChoiceBox fx:id="groupFilter" layoutX="192.0" layoutY="75.0" prefWidth="150.0" />
   </children>
</AnchorPane>
public class ContactApp extends Application
{
    public static void main( String[] args )
    {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        // TODO Auto-generated method stub

        primaryStage.setTitle("Homescreen");
        StageService.getInstance().setPrimaryStage(primaryStage);
        showHomeScreen();

    }

    public void showHomeScreen() {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(ContactApp.class.getResource("/view/GlobalVue.fxml"));
        System.out.println("bla");
        try {
            AnchorPane rootLayout = loader.load();
            Scene scene = new Scene(rootLayout);
            StageService.getInstance().getPrimaryStage().setScene(scene);
            StageService.getInstance().getPrimaryStage().show();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
public class GlobalVueController {
    @FXML
    private AnchorPane homeScreenAnchorPane;

    @FXML
    private ListView<Contact> listView;

    @FXML
    private TextField searchBar;

    @FXML
    private Button addButtonHS;

    @FXML
    private Button supprButtonHS;

    @FXML
    private ChoiceBox<Category> groupFilter;

    private ObservableList<Contact> observableContacts;


    public GlobalVueController() {

        observableContacts = FXCollections.observableArrayList();

        ContactDao daoContact = new ContactDao();
        daoContact.listAllContacts("").forEach( e-> observableContacts.add(e));

    }


    @FXML
    public void init() {
        listView.setItems(observableContacts);
        listView.setCellFactory(observableContacts -> new ContactViewController());
    }

最后我得到的错误是:

javafx.fxml.LoadException: 
/D:/ISEN/Cours/M1/Projets/Contact_App/contact_app/target/classes/view/GlobalVue.fxml:13

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
    at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103)
    at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:922)
    at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971)
    at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220)
    at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744)
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
    at isen.java2.app.ContactApp.showHomeScreen(ContactApp.java:38)
    at isen.java2.app.ContactApp.start(ContactApp.java:29)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(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$147(WinApplication.java:177)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: view.GlobalVueController
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:920)
    ... 18 more

谢谢你的帮助!

共有1个答案

仉联
2023-03-14

好的,原来我只是需要更新我的Maven项目!

 类似资料:
  • 我正在学习使用SceneBuilder创建一个新的JavaFX应用程序的教程,并尝试向.fxml文件添加一个controller类。 我正在使用Eclipse和Gluon的Scene Builder V8.1.1版本。 在哪里可以将我的.fxml文件连接到我的控制器Java类?

  • 我使用SpringBoot 1.5.9并创建了: 我的简单控制器正在处理“/”并转发到index.html: 根据SpringBoot文档,应该呈现下的静态内容。如果创建文件夹并将我的放在那里,并在pom.xml中包含spring-boot-starter-thymeleaf依赖项,那么一切都很好。但是,我很困惑为什么src/main/resources/static/index.html的基本呈

  • 问题内容: 我是有经验的新手,并尝试使用1.3新版本。 这是我的代码 控制台显示此错误。 但是当我将角度源更改为 然后就可以了。我用铬。任何人都让我知道问题可能出在哪里。 问题答案: 默认情况下,1.3中不再支持全局控制器功能。请参阅更改日志 … $ controller将不再在窗口上查找控制器。在控制器上查看窗口的旧行为最初旨在用于示例,演示和玩具应用程序。我们发现允许全局控制器功能会鼓励不良做

  • 我正在从一个示例项目中研究Spring Boot。它的应用如下所示。 在控制器包中有一个控制器。

  • 我的目录 我试图创建学校的Spring启动应用程序,列出书籍到一个HTML页面从数据库与控制器。 就我个人而言,我认为问题在于控制器由于某种原因无法找到模板。因为当我通过chrome导航到想要的模板时,它只在页面上显示“booklist”,其他什么都没有。 我尝试创建一个全新的项目,并将代码从其他文件复制到新文件中,但没有结果。 我的控制器类: 我的html模板: 波姆。xml文件: 应用属性文件

  • 我使用mn create-app example.micronaut.complete创建了一个新的micronaut应用程序 之后,我使用intellij打开了项目,并将一个新类作为TestController添加到项目中,代码如下: 但我得到了