JavaFX FXML应用程序无法启动

JavaFX FXML应用程序无法启动,java,javafx,Java,Javafx,我在Netbeans中创建和运行JavaFXML应用程序时遇到问题。我正在运行Netbeans 8.1。下面是代码和错误消息。我猜netbeans编写路径的方式有问题: Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 但我不知道用什么方法 Main public class JavaFXApplication6 extends Application { @Override

我在Netbeans中创建和运行JavaFXML应用程序时遇到问题。我正在运行Netbeans 8.1。下面是代码和错误消息。我猜netbeans编写路径的方式有问题:

Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
但我不知道用什么方法

Main

public class JavaFXApplication6 extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }

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

public class FXMLDocumentController implements Initializable {

    @FXML
    private Label label;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Hello World!");
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

}
FXML

以下是我的文件夹布局:

更新 还收到了以下简短的错误消息:

ant -f /Users/MyAccount/NetBeansProjects/JavaFXApplication7 -Djavac.includes=javafxapplication7/JavaFXApplication7.java -Dnb.internal.action.name=run.single -Drun.class=javafxapplication7.JavaFXApplication7 run-single
init:
deps-jar:
Created dir: /Users/MyAccount/NetBeansProjects/JavaFXApplication7/build
Updating property file: /Users/MyAccount/NetBeansProjects/JavaFXApplication7/build/built-jar.properties
Created dir: /Users/MyAccount/NetBeansProjects/JavaFXApplication7/build/classes
Created dir: /Users/MyAccount/NetBeansProjects/JavaFXApplication7/build/empty
Created dir: /Users/MyAccount/NetBeansProjects/JavaFXApplication7/build/generated-sources/ap-source-output
Compiling 1 source file to /Users/MyAccount/NetBeansProjects/JavaFXApplication7/build/classes
compile-single:
run-single:
Exception in Application start method
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMet/Users/MyAccount/NetBeansProjects/JavaFXApplication7/nbproject/build-impl.xml:1051: The following error occurred while executing this line:
/Users/MyAccount/NetBeansProjects/JavaFXApplication7/nbproject/build-impl.xml:805: Java returned: 1
BUILD FAILED (total time: 15 seconds)
更新-这是我的build.xml

<?xml version="1.0" encoding="UTF-8"?><!-- You may freely edit this file. See commented blocks below for --><!-- some examples of how to customize the build. --><!-- (If you delete it and reopen the project it will be recreated.) --><!-- By default, only the Clean and Build commands use this build script. --><project name="JavaFXApplication1" default="default" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
    <description>Builds, tests, and runs the project JavaFXApplication1.</description>
    <import file="nbproject/build-impl.xml"/>
    <!--

    There exist several targets which are by default empty and which can be 
    used for execution of your tasks. These targets are usually executed 
    before and after some main targets. Those of them relevant for JavaFX project are: 

      -pre-init:                 called before initialization of project properties
      -post-init:                called after initialization of project properties
      -pre-compile:              called before javac compilation
      -post-compile:             called after javac compilation
      -pre-compile-test:         called before javac compilation of JUnit tests
      -post-compile-test:        called after javac compilation of JUnit tests
      -pre-jfx-jar:              called before FX SDK specific <fx:jar> task
      -post-jfx-jar:             called after FX SDK specific <fx:jar> task
      -pre-jfx-deploy:           called before FX SDK specific <fx:deploy> task
      -post-jfx-deploy:          called after FX SDK specific <fx:deploy> task
      -pre-jfx-native:           called just after -pre-jfx-deploy if <fx:deploy> runs in native packaging mode
      -post-jfx-native:          called just after -post-jfx-deploy if <fx:deploy> runs in native packaging mode
      -post-clean:               called after cleaning build products

    (Targets beginning with '-' are not intended to be called on their own.)

    Example of inserting a HTML postprocessor after javaFX SDK deployment:

        <target name="-post-jfx-deploy">
            <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/>
            <property name="jfx.deployment.html" location="${jfx.deployment.dir}${file.separator}${jfx.deployment.base}.html"/>
            <custompostprocess>
                <fileset dir="${jfx.deployment.html}"/>
            </custompostprocess>
        </target>

    Example of calling an Ant task from JavaFX SDK. Note that access to JavaFX SDK Ant tasks must be
    initialized; to ensure this is done add the dependence on -check-jfx-sdk-version target:

        <target name="-post-jfx-jar" depends="-check-jfx-sdk-version">
            <echo message="Calling jar task from JavaFX SDK"/>
            <fx:jar ...>
                ...
            </fx:jar>
        </target>

    For more details about JavaFX SDK Ant tasks go to
    http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm

    For list of available properties check the files
    nbproject/build-impl.xml and nbproject/jfx-impl.xml.

    -->
</project>

构建、测试和运行项目JavaFXApplication1。
  • 努力清洁和建造
  • 运行文件

  • 请在错误消息中添加新行错误消息仅表示找不到FXML文件,因此路径不正确。根据您当前拥有的路径,它希望在与
    JavaFXApplication6
    类相同的包中找到
    FXMLDocument.fxml
    。你能回答你的问题以显示你的项目布局吗?我现在已经添加了我的folderlayout的图像。这很奇怪,因为netbeans就是这样将其构建为默认的……奇怪的是,它没有编译您的控制器类,也没有部署FXML文件。您可能需要从头开始清理和重建项目(不确定如何在NetBeans中进行清理和重建)。在NetBeans中,您可以通过右键单击项目文件夹选择“清理和重建”来清理和重建项目。但是没有什么改变。。。
    <?xml version="1.0" encoding="UTF-8"?><!-- You may freely edit this file. See commented blocks below for --><!-- some examples of how to customize the build. --><!-- (If you delete it and reopen the project it will be recreated.) --><!-- By default, only the Clean and Build commands use this build script. --><project name="JavaFXApplication1" default="default" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
        <description>Builds, tests, and runs the project JavaFXApplication1.</description>
        <import file="nbproject/build-impl.xml"/>
        <!--
    
        There exist several targets which are by default empty and which can be 
        used for execution of your tasks. These targets are usually executed 
        before and after some main targets. Those of them relevant for JavaFX project are: 
    
          -pre-init:                 called before initialization of project properties
          -post-init:                called after initialization of project properties
          -pre-compile:              called before javac compilation
          -post-compile:             called after javac compilation
          -pre-compile-test:         called before javac compilation of JUnit tests
          -post-compile-test:        called after javac compilation of JUnit tests
          -pre-jfx-jar:              called before FX SDK specific <fx:jar> task
          -post-jfx-jar:             called after FX SDK specific <fx:jar> task
          -pre-jfx-deploy:           called before FX SDK specific <fx:deploy> task
          -post-jfx-deploy:          called after FX SDK specific <fx:deploy> task
          -pre-jfx-native:           called just after -pre-jfx-deploy if <fx:deploy> runs in native packaging mode
          -post-jfx-native:          called just after -post-jfx-deploy if <fx:deploy> runs in native packaging mode
          -post-clean:               called after cleaning build products
    
        (Targets beginning with '-' are not intended to be called on their own.)
    
        Example of inserting a HTML postprocessor after javaFX SDK deployment:
    
            <target name="-post-jfx-deploy">
                <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/>
                <property name="jfx.deployment.html" location="${jfx.deployment.dir}${file.separator}${jfx.deployment.base}.html"/>
                <custompostprocess>
                    <fileset dir="${jfx.deployment.html}"/>
                </custompostprocess>
            </target>
    
        Example of calling an Ant task from JavaFX SDK. Note that access to JavaFX SDK Ant tasks must be
        initialized; to ensure this is done add the dependence on -check-jfx-sdk-version target:
    
            <target name="-post-jfx-jar" depends="-check-jfx-sdk-version">
                <echo message="Calling jar task from JavaFX SDK"/>
                <fx:jar ...>
                    ...
                </fx:jar>
            </target>
    
        For more details about JavaFX SDK Ant tasks go to
        http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm
    
        For list of available properties check the files
        nbproject/build-impl.xml and nbproject/jfx-impl.xml.
    
        -->
    </project>