Je tente de lancer une classe Application interne à partir de la classe englobante, ce qui ne fonctionne pas.JavaFX launch inner Classe d'application
J'ai déjà essayé de supprimer le modificateur statique de Windows et de le lancer depuis une instance de Main.
code:
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:
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
Vous avez raison! : D J'étais absolument sûr d'avoir essayé ça! Merci. Savez-vous si vous pouvez obtenir l'instance Window à partir de la méthode Application.launch ou si vous devez faire en sorte que l'instance de Windows indique la classe Main qui vient d'être lancée? – Kangalioo
@Kangalioo Vous ne pouvez pas obtenir l'instance de la classe 'Application' qui est créée par' launch() ', sinon en faisant référence à' this' dans les méthodes 'start()' (ou 'init()') . –
Dans mon cas, la classe et le constructeur étaient publics, mais il me manquait des claviers "statiques", donc ça ne commençait pas. – Line