1
我試圖從封閉的類啓動一個內部的應用程序類,這不起作用。JavaFX推出內部應用程序類
我已經嘗試從Window中刪除靜態修飾符並從Main的實例啓動它。
代碼:
import javafx.application.Application;
import javafx.stage.Stage;
public class Main {
private static class Window extends Application {
@Override
public void start(Stage stage) {
stage.show();
}
}
public static void main(String args[]) {
Application.launch(Window.class, args);
}
}
例外:
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
你說得對! :D我絕對確定我嘗試過!謝謝。你知道,如果你能以某種方式從Application.launch方法獲取Window實例,或者如果你必須讓Window實例告訴剛剛啓動的Main類? – Kangalioo
@Kangalioo除了通過引用'start()'(或'init()')方法中的'this',你不能得到'launch()'創建的'Application'類的實例。 –
在我的情況下,類和構造函數是公開的,但我錯過了「靜態」的關鍵工作,因此它不是開始。 – Line