相关疑难解决方法(0)

启动 JavaFX 应用程序时的内部 NPE

所以基本上我开始了一个虚拟的 JavaFX 项目只是为了为我的实际问题实现一个简约的例子。但现在我什至无法再运行那个简约的项目,也没有收到足够的错误信息来实际自己用谷歌搜索出来。所以现在,当我运行代码时,我收到了给定的错误堆栈,它不会引导我到任何地方。

我正在使用 IntelliJ。JavaFX 库设置正确,VM 选项设置为: --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml

最重要的是,当我运行代码时,这些错误会在控制台中弹出,但应用程序似乎仍在运行,因为我需要按下 IntelliJ 的红色停止按钮才能真正停止它。

有没有人猜测,这里出了什么问题?我没有足够的经验来跟踪这些错误,因为它们没有指向我的代码,而是指向一些 Deep Java 代码。

例外:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.NullPointerException
    at java.base/java.lang.reflect.Method.invoke(Method.java:559)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
    ... 5 more
Run Code Online (Sandbox Code Playgroud)

主.java:

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import java.io.IOException;

public class Main extends Application {

    private Stage rootStage;
    public BorderPane mainWindow;
    public AnchorPane left; …
Run Code Online (Sandbox Code Playgroud)

java javafx intellij-idea nullpointerexception invocationtargetexception

3
推荐指数
1
解决办法
239
查看次数

我想了解抽象类应用程序的 launch() 方法在 JavaFX 中如何工作

在javaFX中Application是一个抽象类。在这个抽象类中,有一些抽象方法在扩展抽象应用程序类的主类中被重写,并且在抽象类应用程序中也有静态 launch() 方法。launch() 方法从主类中的 main 方法调用。现在 launch() 方法如何调用这些抽象方法,并且对于这些调用,执行主类中的重写方法?请帮助我了解这个程序实际上是有效的。我知道非静态方法不能从静态方法调用,并且不可能创建抽象类的实例。抽象方法不能是静态方法。

我不想创建主类的对象。因为launch()方法不知道主类的名称是什么。

给我写一段java代码,这个过程很好地说明了这一点。像这样

public class main extends Application{
    public static void main(String[] args)
        launch();                       // launch() was a static method in Application class
    }
    @override
    public void init(){                 // init() was an abstract method in Application class
        System.out.println("hello");
    }
}

public abstract class Application {
    public static void launch(){
        init();
    }
    public abstract void init();
}
Run Code Online (Sandbox Code Playgroud)

我想得到输出:你好

java abstract-class static-methods javafx abstract-methods

0
推荐指数
2
解决办法
242
查看次数