JavaFX启动内部应用程序类

JavaFX启动内部应用程序类,java,javafx,inner-classes,Java,Javafx,Inner Classes,我试图从封闭类启动一个内部应用程序类,但它不起作用 我已经尝试从窗口中删除静态修改器,并从Main的实例中启动它 代码: 例外情况: Exception in Application constructor Exception in thread "main" java.lang.RuntimeException: Unable to construct Application instance: class VirtualLaunchpad$Window at com.sun.java

我试图从封闭类启动一个内部应用程序类,但它不起作用

我已经尝试从窗口中删除静态修改器,并从Main的实例中启动它

代码:

例外情况:

Exception in Application constructor
Exception in thread "main" java.lang.RuntimeException: Unable to construct Application instance: class VirtualLaunchpad$Window
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:907)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$1(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodException: VirtualLaunchpad$Window.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082)
    at java.lang.Class.getConstructor(Class.java:1825)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$7(LauncherImpl.java:818)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$5(GtkApplication.java:139)
    ... 1 more
应用程序构造函数中的异常 线程“main”java.lang.RuntimeException中出现异常:无法构造应用程序实例:类VirtualRunchPad$窗口 位于com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:907) 在com.sun.javafx.application.launchempl.lambda$launchApplication$1(launchempl.java:182) 运行(Thread.java:748) 原因:java.lang.NoSuchMethodException:VirtualUnchPad$Window。() 位于java.lang.Class.getConstructor0(Class.java:3082) 位于java.lang.Class.getConstructor(Class.java:1825) 在com.sun.javafx.application.launchempl.lambda$launchApplication1$7(launchempl.java:818) 位于com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326) 位于com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295) 位于java.security.AccessController.doPrivileged(本机方法) 位于com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294) 位于com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:95) 在com.sun.glass.ui.gtk.GtkApplication.\u runLoop(本机方法) 位于com.sun.glass.ui.gtk.GtkApplication.lambda$null$5(GtkApplication.java:139) ... 还有一个
应用程序
子类(及其无参数构造函数)必须是公共的。
Application.launch()
方法仅在通过反射实例化应用程序类时搜索public no arg构造函数

import javafx.application.Application;
import javafx.stage.Stage;

public class Main {
    public static class Window extends Application {
        @Override
        public void start(Stage stage) {
            stage.show();
        }
    }

    public static void main(String args[]) {
        Application.launch(Window.class, args);
    }
}

你说得对我绝对相信我试过了!谢谢你知道你是否可以通过Application.launch方法获取窗口实例,或者你必须让窗口实例告诉刚刚启动的主类吗?@Kangalioo你无法获取由
launch()
创建的
应用程序
类的实例,除了在
start()
(或
init()
)方法中引用
this
。在我的例子中,类和构造函数是公共的,但我缺少“静态”键,因此它没有启动。
import javafx.application.Application;
import javafx.stage.Stage;

public class Main {
    public static class Window extends Application {
        @Override
        public void start(Stage stage) {
            stage.show();
        }
    }

    public static void main(String args[]) {
        Application.launch(Window.class, args);
    }
}