【问题标题】:Basic javafx scenebuilder fxml file causes error基本 javafx scenebuilder fxml 文件导致错误
【发布时间】:2017-10-01 03:16:50
【问题描述】:

我正在尝试创建一个中间有几个选项卡的基本窗口,第一个选项卡包含一个表格。

每次我运行主 java 类时,它都会给我错误,即使我摆脱了表格和选项卡。

这是我的主文件:

package application;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXMLLoader;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
            Scene scene = new Scene(root,400,400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

这是我的 fxml 文件:

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

<?import com.gluonhq.charm.glisten.control.NavigationDrawer?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>

<BorderPane xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application/SampleController.java">
   <left>
      <GridPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="720.0" prefWidth="1280.0" BorderPane.alignment="CENTER">
        <columnConstraints>
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="300.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="580.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="300.0" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints maxHeight="81.0" minHeight="60.0" prefHeight="60.0" vgrow="SOMETIMES" />
          <RowConstraints maxHeight="152.0" minHeight="60.0" prefHeight="60.0" vgrow="SOMETIMES" />
          <RowConstraints maxHeight="420.0" minHeight="420.0" prefHeight="420.0" vgrow="SOMETIMES" />
            <RowConstraints maxHeight="315.0" minHeight="180.0" prefHeight="180.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" GridPane.columnIndex="1" GridPane.rowIndex="2">
              <tabs>
                <Tab text="Untitled Tab 1">
                  <content>
                    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                           <children>
                              <TableView editable="true" layoutX="109.0" layoutY="47.0" prefHeight="200.0" prefWidth="200.0" tableMenuButtonVisible="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                                <columns>
                                  <TableColumn prefWidth="75.0" text="C1" />
                                  <TableColumn prefWidth="75.0" text="C2" />
                                </columns>
                              </TableView>
                           </children>
                        </AnchorPane>
                  </content>
                </Tab>
                <Tab text="Untitled Tab 2">
                  <content>
                    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
                  </content>
                </Tab>
              </tabs>
            </TabPane>
            <NavigationDrawer GridPane.columnIndex="1" GridPane.rowIndex="3" />
         </children>
      </GridPane>
   </left>
</BorderPane>

任何帮助。我找不到任何东西,但可能是我的 fxmlloader.load 文件源?我真的不知道。

这是我的错误代码:

javafx.fxml.LoadException: 
/C:/Users/_____/Desktop/AllJava/Java/SecAnalyzer/bin/application/Sample.fxml

    at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
    at javafx.fxml.FXMLLoader.importClass(Unknown Source)
    at javafx.fxml.FXMLLoader.processImport(Unknown Source)
    at javafx.fxml.FXMLLoader.processProcessingInstruction(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.load(Unknown Source)
    at application.Main.start(Main.java:14)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(Unknown Source)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.gluonhq.charm.glisten.control.NavigationDrawer
    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.loadTypeForPackage(Unknown Source)
    at javafx.fxml.FXMLLoader.loadType(Unknown Source)
    ... 21 more

安装 gluon mobile 后出现新错误:

javafx.fxml.LoadException: 
/C:/Users/____/Desktop/AllJava/Java/SecAnalyzer/bin/application/Sample.fxml:14

    at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
    at javafx.fxml.FXMLLoader.access$700(Unknown Source)
    at javafx.fxml.FXMLLoader$ValueElement.processAttribute(Unknown Source)
    at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(Unknown Source)
    at javafx.fxml.FXMLLoader$Element.processStartElement(Unknown Source)
    at javafx.fxml.FXMLLoader$ValueElement.processStartElement(Unknown Source)
    at javafx.fxml.FXMLLoader.processStartElement(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.load(Unknown Source)
    at application.Main.start(Main.java:14)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(Unknown Source)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: application/SampleController.java
    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)
    ... 23 more

【问题讨论】:

  • 在您的问题中发布堆栈跟踪
  • 什么是堆栈跟踪?
  • 发布堆栈跟踪(程序调用的异常)。
  • 分享 SampleController.java 文件
  • @StealthVice7 什么是堆栈跟踪:stackoverflow.com/questions/3988788/…

标签: java javafx fxml scenebuilder


【解决方案1】:

您的classpath 中有NavigationDrawer.class 吗?

引起:java.lang.ClassNotFoundException: com.gluonhq.charm.glisten.control.NavigationDrawer

在您的 FXML 文件中,您有:

<?import com.gluonhq.charm.glisten.control.NavigationDrawer?>

所以你需要在你的classpath 中有NavigationDrawer.class 才能正确加载 FXML 文档。

如果不需要,请从gluonhq 下载。

【讨论】:

  • 尝试从scenebuilder / fxml中移除NavigationDrawer,看看它是否有效。
  • 我真的很困惑? gluohq 是场景构建器。我有那个。
  • @StealthVice7 当您使用场景构建器构建事物时,它会调用节点的构造函数。由于 Gluon 接管了场景构建器,他们添加了一些自己的节点/类。但是,您仍然需要在类路径中包含类才能使用它们。这是误导我同意。就像使用 controlsFX 库一样,您需要在场景构建器和类路径中都拥有它才能使用它,而不仅仅是一个。
  • 如果您使用的是 Netbeans,请转到插件并下载 Gluon 移动插件并安装它。
  • 对不起,我很困惑。我已经下载了 e(fx)clipse,并且 scenebuilder 链接到了 eclipse。我可以打开场景生成器,它会编辑我的 fxml。我完全按照 youtube 教程进行操作。为什么它不起作用?我还需要做什么?谢谢
猜你喜欢
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2015-12-02
相关资源
最近更新 更多