首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX NullPointerException位置是必需的NetBeans

JavaFX NullPointerException位置是必需的NetBeans
EN

Stack Overflow用户
提问于 2015-07-08 05:17:31
回答 4查看 5.5K关注 0票数 2

我尝试了我在堆栈堆栈溢出上找到的任何其他东西,我真的不明白为什么这个不能工作。我不会向您展示我的应用程序中不起作用的代码,因为即使是在示例项目中,它也不起作用。所以问题来了:

当我用示例代码创建新的JavaFX应用程序时,当我将其作为桌面应用程序运行时,当我构建此应用程序并在浏览器中启动时,它会工作。这可以完美地作为桌面和浏览器应用程序使用

但当我创建新的css应用程序,这几乎是相同的,但阶段是由JavaFX和css定义的,而不是字节他代码。这是一个完美的windows应用程序,但不能作为浏览器应用程序

代码语言:javascript
复制
java.lang.NullPointerException: Location is required.
    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 javafxapplication3.JavaFXApplication3.start(JavaFXApplication3.java:22)
    at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$170(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$$Lambda$46/15592694.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$$Lambda$45/19532686.run(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$145(Unknown Source)
    at com.sun.glass.ui.win.WinApplication$$Lambda$35/9825943.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.NullPointerException: Location is required.
    at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$170(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$$Lambda$46/15592694.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$$Lambda$45/19532686.run(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$145(Unknown Source)
    at com.sun.glass.ui.win.WinApplication$$Lambda$35/9825943.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Location is required.
    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 javafxapplication3.JavaFXApplication3.start(JavaFXApplication3.java:22)
    ... 11 more

以下是工作应用程序的代码:

代码语言:javascript
复制
public class JavaFXApplication4 extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

此应用程序不能在浏览器中运行,并抛出异常:

代码语言:javascript
复制
public class JavaFXApplication3 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();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

有人能帮我吗?

EN

回答 4

Stack Overflow用户

发布于 2015-07-08 05:28:48

问题出在下面这一行:

代码语言:javascript
复制
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

很明显,load方法实际上是使用null参数调用的。这是因为sample(“/getResource/sample.fxml”)不能归档该资源。

运行时类路径上缺少资源(或具有错误的路径)。

Source

票数 8
EN

Stack Overflow用户

发布于 2017-10-20 15:16:05

问题与签名有关,但我不太明白这是什么意思。然后,我搜索了如何使用netbeans在浏览器中运行JavaFX应用程序,找到了以下内容:http://docs.oracle.com/javafx/2/fxml_get_started/fxml_deployment.htm

在NetBeans8.2中,在Build > Deployment下的项目属性中有一个复选框:

请求无限制访问(启用签名)

有了这个,它就可以工作了。祝好运。

票数 0
EN

Stack Overflow用户

发布于 2019-02-07 01:19:01

在某些情况下,如果你使用maven,你应该把你所有的fxml文件移到resources目录,并在那里使用一个相对地址。

如果你想在控制器类中使用stage.setScene()函数,最好使用:

代码语言:javascript
复制
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31279442

复制
相关文章

相似问题

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