Hi, derzeit erstelle ich ein Programm mit JavaFX/FXML und arbeite mit dem MVC Modell. Nun habe ich folgende Exception, beim Starten des Programmes:
Den Controller habe ich in der FXML hinterlegt. Das Problem ist, dass ich im Konstruktor ein Attribut übergeben MUSS, was aber eben nicht sein darf und somit zu diesem Fehler führt.
Wie kann ich das beheben/umgehen?
(In meiner Main.java nutze ich die start Methode von JavaFX, die als Parameter eine Stage benötigt und diese Stage übergebe ich dann über den Controller an das View. Ist dies vielleicht anders umsetzbar?)
Freundliche Grüße!
Code:
javafx.fxml.LoadException:
/C:/Users/User/Desktop/Projekt_MM/MM_200819-0331/bin/view/View.fxml:12
at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625)
at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:941)
at javafx.fxml/javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:980)
at javafx.fxml/javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:227)
at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:752)
at javafx.fxml/javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2722)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2552)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106)
at view.View.generateGUI(View.java:31)
at view.View.<init>(View.java:23)
at control.Controller.<init>(Controller.java:22)
at application.Main.start(Main.java:22)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.lang.InstantiationException: control.Controller
at java.base/java.lang.Class.newInstance(Class.java:584)
at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:936)
... 25 more
Caused by: java.lang.NoSuchMethodException: control.Controller.<init>()
at java.base/java.lang.Class.getConstructor0(Class.java:3354)
at java.base/java.lang.Class.newInstance(Class.java:571)
... 26 more
Den Controller habe ich in der FXML hinterlegt. Das Problem ist, dass ich im Konstruktor ein Attribut übergeben MUSS, was aber eben nicht sein darf und somit zu diesem Fehler führt.
Wie kann ich das beheben/umgehen?
(In meiner Main.java nutze ich die start Methode von JavaFX, die als Parameter eine Stage benötigt und diese Stage übergebe ich dann über den Controller an das View. Ist dies vielleicht anders umsetzbar?)
Freundliche Grüße!
Zuletzt bearbeitet: