JavaFX启动内部应用程序类
我试图从封闭类启动一个内部应用程序类,但它不起作用 我已经尝试从窗口中删除静态修改器,并从Main的实例中启动它 代码: 例外情况: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
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);
}
}