# Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found



## mamir00 (18. Mai 2021)

Hallo Leute
Ich verzweifle hier seit 3 Tagen. Wollte etwas in JavaFX Programmieren doch leider will mein Intellij  nicht so.
Ich habe Java 11  geladen sowie JavaFX 11 https://gluonhq.com/products/javafx/
Danach die Systemvariable angepasst.und das klappt alles richtig bei Hello world project oder andere CODE soger auch . aber ich hab jetzt eine neue projekt und bekomme ich diese Fehlermeldung . 
kann jemand vlt mir dabei helfen ,um diese fehler zu beheben ? 


*Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found

Process finished with exit code 1*


----------



## Gelöschtes Mitglied 65838 (18. Mai 2021)

dein classpath bzw dein vm argument ist nicht richtig gesetzt


----------



## Gelöschtes Mitglied 65838 (18. Mai 2021)

um genau zu sein findet deine Module Info nicht javafx.controls und dann meckert deine main dass es nicht gefunden wurde


----------



## kneitzel (18. Mai 2021)

Generell wäre meine Empfehlung, sich einfach nach dem Getting Started vom OpenJFX zu richten:





						Getting Started with JavaFX
					

Getting started with JavaFX for Java desktop application development



					openjfx.io
				




Ansonsten wäre die Frage wichtig, was Du wie machst / versuchst. Aber das Getting Started behandelt die wichtigsten Methoden.
Meine Empfehlung wäre aber, Maven (oder Gradle) zu nutzen.


----------



## mamir00 (19. Mai 2021)

Joreyk hat gesagt.:


> um genau zu sein findet deine Module Info nicht javafx.controls und dann meckert deine main dass es nicht gefunde wurde


und das bedeutet ,etwas ist falsch bei programm CODE im controls ?leider ich bin neue im javafx und kann es nicht s gut verstehen was soll ich geanu tun um diese fehler zu behenen ?


----------



## kneitzel (19. Mai 2021)

mamir00 hat gesagt.:


> was soll ich geanu tun um diese fehler zu behenen ?


Da wir nicht genau wissen, was Du genau machst, können wir Dir auch nicht sagen, was Du anders machen musst.

Daher mein Hinweis zu der genauen Schritt für Schritt Anleitung, die eben viele unterschiedliche Möglichkeiten aufzeigt. Eine der gezeigten Wege solltest Du gehen (also z.B. einfach nur Eclipse mit einer JDK und der JavaFX SDk Installation ohne alles weitere)...

Da es sehr schwer ist, in einer IDE Fehler zu lokalisieren (Zeige mal die Einstellungen aus zig verschiedenen Fenstern/Tabs), ist meine Empfehlung auch weiterhin, es mit Maven oder Gradle anzugehen. Da kann das Projekt dann jederzeit gezeigt werden und man kann einfach Änderungen vorschlagen. Maven und Gradle Wege (mit dem openjfx Plugin) werden in dem genannten Link auch behandelt.


----------



## lam_tr (19. Mai 2021)

kneitzel hat gesagt.:


> Da wir nicht genau wissen, was Du genau machst, können wir Dir auch nicht sagen, was Du anders machen musst.
> 
> Daher mein Hinweis zu der genauen Schritt für Schritt Anleitung, die eben viele unterschiedliche Möglichkeiten aufzeigt. Eine der gezeigten Wege solltest Du gehen (also z.B. einfach nur Eclipse mit einer JDK und der JavaFX SDk Installation ohne alles weitere)...
> 
> Da es sehr schwer ist, in einer IDE Fehler zu lokalisieren (Zeige mal die Einstellungen aus zig verschiedenen Fenstern/Tabs), ist meine Empfehlung auch weiterhin, es mit Maven oder Gradle anzugehen. Da kann das Projekt dann jederzeit gezeigt werden und man kann einfach Änderungen vorschlagen. Maven und Gradle Wege (mit dem openjfx Plugin) werden in dem genannten Link auch behandelt.


Ja ich weiß die Frage wird bestimmt unnötig sein, aber kann man OpenJFX auch ohne Maven und Gradle zum Laufen bekommen?

Vermutlich wird die kurze Antwort nein sein.

Ich habe Spring Boot in Zusammenhang mit OpenJFX noch nicht zum Laufen bekommen. Hast du @kneitzel da schon Erfahrung damit gemacht?


----------



## Mart (19. Mai 2021)

doch natürlich indem du die bibliothek richtig einbindest


----------



## kneitzel (19. Mai 2021)

Also generell geht es auch ohne Maven oder Gradle. Die Webseite zeigt das auch recht schön auf. Was bei Dir die Probleme verursachen könnte ist ggf. einfach fehlende --module-path und --add-module Anweisungen. Das pure JavaFX Vorgehen mit den notwendigen Parametern findet sich unter dem Punkt "Running HelloWorld with JavaFX".
Wie man das in Eclipse eintragen kann, wäre unter dem Punkt "JavaFX and Eclipse" - Unterpunkt vermutlich "Non-modular from IDE".

Ansonsten nutzt Du Spring Boot ohne Maven und Gradle? Direkt in Eclipse? Bietet Eclipse da noch eine erweiterte Funktionalität? Sowas wie start.spring.io in ein Eclipse Projekt verwurstelt mit herunterladen der Abhängigkeiten und so? 

Generell habe ich Spring Boot auch schon "missbraucht" um speziell das DI in einer Client Applikation zu nutzen. Ich weiss aber nicht mehr im Detail, was ich da dann gemacht hatte zur Initialisierung. Was für eine Problematik hast Du denn bei dem Zusammenspiel von JavaFX und Spring Boot? Ich könnte mir Probleme vorstellen speziell im DI Bereich, d.h. der FXMLLoader lädt z.B. einen Controller und macht das seine Injection. Dann ist das wie als wenn Du eine neue Instanz erzeugst mit new -> Keine DI von Spring. Aber so eine Problematik lässt sich ja durchaus ohne zu tiefe Eingriffe lösen.


----------



## Mart (19. Mai 2021)

lad javafx eclipse runter und erstell eine user lib mit javafx ...geh in die module info und hover über javafx graphics und klicke "fix project setup " und es ist fertig ohne irgendwelche vm argumente ...das hab ich schon mal genauer in einem anderen post beschrieben ging auch um eclipse musst du dir halt raus suchen
so gehts halt in eclipse


----------



## Mart (19. Mai 2021)

das ist dann im ganzen eine 4 klick sache

aber um ehrlich zu sein bin ich zu faul um den post zu finden ... der ist nichtmal so alt


----------



## kneitzel (19. Mai 2021)

Oder schau Dir den Link an, den ich ja nicht ohne Grund schon am Anfang gegeben habe ... die Konfiguration in Eclipse ist da halt auch beschrieben ...



Mart hat gesagt.:


> ohne irgendwelche vm argumente


Da dürfte aber dann in den Projekt Einstellungen genau solche Dinge konfiguriert werden. Würde mich wundern, wenn nicht


----------



## lam_tr (19. Mai 2021)

kneitzel hat gesagt.:


> Also generell geht es auch ohne Maven oder Gradle. Die Webseite zeigt das auch recht schön auf. Was bei Dir die Probleme verursachen könnte ist ggf. einfach fehlende --module-path und --add-module Anweisungen. Das pure JavaFX Vorgehen mit den notwendigen Parametern findet sich unter dem Punkt "Running HelloWorld with JavaFX".
> Wie man das in Eclipse eintragen kann, wäre unter dem Punkt "JavaFX and Eclipse" - Unterpunkt vermutlich "Non-modular from IDE".
> 
> Ansonsten nutzt Du Spring Boot ohne Maven und Gradle? Direkt in Eclipse? Bietet Eclipse da noch eine erweiterte Funktionalität? Sowas wie start.spring.io in ein Eclipse Projekt verwurstelt mit herunterladen der Abhängigkeiten und so?
> ...


Ehrlich gesagt, benutze ich aus Bequemlichkeit immer noch JavaFX 8. Aber ich meine, ich habe mal mit Efxclipse die OpenJFX Runtime konfigurieren können. 

Nein, wenn ich Spring Boot immer mache, dann ist Gradle immer ein MUSS. Aber das mergen der javafx-module-plugin mit dem Spring Boot gradle konfiguration habe ich bisher noch nicht so hinbekommen, dass ich die OpenJFX App über Run Task "Application" laufen lassen kann. Es fährt sozusagen ohne Spring Boot Konfig hoch.

Und ja das Problem mit dem Controller Injektion habe ich da ein Template von @dzim bekommen womit man das gut injecten. Ich glaube in seiner Repo unter POC sollte ein gutes Beispiel noch sein, zumindest hatte er das damals für mich hochgleaden.


----------



## Mart (19. Mai 2021)

kneitzel hat gesagt.:


> Oder schau Dir den Link an, den ich ja nicht ohne Grund schon am Anfang gegeben habe ... die Konfiguration in Eclipse ist da halt auch beschrieben ...
> 
> 
> Da dürfte aber dann in den Projekt Einstellungen genau solche Dinge konfiguriert werden. Würde mich wundern, wenn nicht


es war so gemeint dass man es selber nicht rein tippen muss und das automatisch "richtig" funktioniert


----------



## mamir00 (19. Mai 2021)

kneitzel hat gesagt.:


> Da wir nicht genau wissen, was Du genau machst, können wir Dir auch nicht sagen, was Du anders machen musst.
> 
> Daher mein Hinweis zu der genauen Schritt für Schritt Anleitung, die eben viele unterschiedliche Möglichkeiten aufzeigt. Eine der gezeigten Wege solltest Du gehen (also z.B. einfach nur Eclipse mit einer JDK und der JavaFX SDk Installation ohne alles weitere)...
> 
> Da es sehr schwer ist, in einer IDE Fehler zu lokalisieren (Zeige mal die Einstellungen aus zig verschiedenen Fenstern/Tabs), ist meine Empfehlung auch weiterhin, es mit Maven oder Gradle anzugehen. Da kann das Projekt dann jederzeit gezeigt werden und man kann einfach Änderungen vorschlagen. Maven und Gradle Wege (mit dem openjfx Plugin) werden in dem genannten Link auch behandelt.


Ich programmire gerade eine taschenrechner und ich hab alle einstellung und javafx und so eingebunden . das klappt wenn ich ein andere projekt wie bottum press und so machen . aber nur gerade bei diese DATEI bekomme ich diese Fehler meldung . in der Anhang können sie meine CODE sehen . 
[CODE lang="java" title="view"]package sample;

import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class View {
    public boolean  isEqualClicked = true;
    Model b;
    public int s;
    View(Stage primaryStage,Model m){
        this.b = m;

        //Hier haben wir ein Objekt aus der Klasse erstellt,damit das Textfeld darstellt
        TextField text = new TextField();
        text.setPrefSize(245,43);
        text.setLayoutX(2);
        text.setLayoutY(12);
        //   text.setAlignment(Pos.CENTER_RIGHT);

        //ein Objekt aus diese  Klasse erstellt, damit  im Root Node-Fenster, das wir hier gruppiert werden
        Pane root = new Pane();

        // Button
        Button z0 = new Button(b.zahlen[0]);
        Button z1 = new Button(b.zahlen[1]);
        Button z2 = new Button(b.zahlen[2]);
        Button z3 = new Button(b.zahlen[3]);
        Button z4 = new Button(b.zahlen[4]);
        Button z5 = new Button(b.zahlen[5]);
        Button z6 = new Button(b.zahlen[6]);
        Button z7 = new Button(b.zahlen[7]);
        Button z8 = new Button(b.zahlen[8]);
        Button z9 = new Button(b.zahlen[9]);

        Button add = new Button(b.zahlen[10]);
        Button sub = new Button(b.zahlen[11]);
        Button mult = new Button(b.zahlen[12]);
        Button div = new Button(b.zahlen[13]);
        Button gleich = new Button(b.zahlen[19]);
        Button komme = new Button(b.zahlen[18]);
        Button clear = new Button(b.zahlen[17]);

        Button cos = new Button(b.zahlen[14]);
        Button sin = new Button(b.zahlen[15]);
        Button tan = new Button(b.zahlen[16]);


        // Größe und wo das Button erscheinen
        z0.setPrefSize(94, 42);
        z0.setLayoutX(10);
        z0.setLayoutY(246);
        z0.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z1.setPrefSize(45, 42);
        z1.setLayoutX(10);
        z1.setLayoutY(200);
        z1.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z2.setPrefSize(45, 42);
        z2.setLayoutX(58);
        z2.setLayoutY(200);
        z2.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z3.setPrefSize(45, 42);
        z3.setLayoutX(106);
        z3.setLayoutY(200);
        z3.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z4.setPrefSize(45, 42);

        z4.setLayoutX(10);
        z4.setLayoutY(154);
        z4.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z5.setPrefSize(45, 42);
        z5.setLayoutX(58);
        z5.setLayoutY(154);
        z5.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z6.setPrefSize(45, 42);
        z6.setLayoutX(106);
        z6.setLayoutY(154);
        z6.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z7.setPrefSize(45, 42);
        z7.setLayoutX(10);
        z7.setLayoutY(108);
        z7.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z8.setPrefSize(45, 42);
        z8.setLayoutX(58);
        z8.setLayoutY(108);
        z8.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        z9.setPrefSize(45, 42);
        z9.setLayoutX(106);
        z9.setLayoutY(108);
        z9.setBackground(new Background( new BackgroundFill(Color.DARKGRAY, null, null)));

        add.setPrefSize(45,42);
        add.setLayoutX(154);
        add.setLayoutY(246);
        add.setBackground(new Background(new BackgroundFill(Color.CYAN,null,null)));

        sub.setPrefSize(45,42);
        sub.setLayoutX(154);
        sub.setLayoutY(200);
        sub.setBackground(new Background(new BackgroundFill(Color.CYAN,null,null)));


        mult.setPrefSize(45,42);
        mult.setLayoutX(154);
        mult.setLayoutY(154);
        mult.setBackground(new Background(new BackgroundFill(Color.CYAN,null,null)));

        div.setPrefSize(45,42);
        div.setLayoutX(154);
        div.setLayoutY(108);
        div.setBackground(new Background(new BackgroundFill(Color.CYAN,null,null)));

        gleich.setPrefSize(45,88);
        gleich.setLayoutX(202);
        gleich.setLayoutY(200);
        gleich.setBackground(new Background(new BackgroundFill(Color.DARKCYAN,null,null)));

        komme.setPrefSize(45,42);
        komme.setLayoutX(106);
        komme.setLayoutY(246);
        komme.setBackground(new Background(new BackgroundFill(Color.CYAN,null,null)));

        clear.setPrefSize(45,88);
        clear.setLayoutX(202);
        clear.setLayoutY(108);
        clear.setBackground(new Background(new BackgroundFill(Color.DARKCYAN,null,null)));

        sin.setPrefSize(45,42);
        sin.setLayoutX(10);
        sin.setLayoutY(63);
        sin.setBackground(new Background(new BackgroundFill(Color.CYAN,null,null)));

        cos.setPrefSize(45,42);
        cos.setLayoutX(58);
        cos.setLayoutY(63);
        cos.setBackground(new Background(new BackgroundFill(Color.CYAN,null,null)));

        tan.setPrefSize(45,42);
        tan.setLayoutX(106);
        tan.setLayoutY(63);
        tan.setBackground(new Background(new BackgroundFill(Color.CYAN,null,null)));

        root.getChildren().add(z0);
        root.getChildren().add(z1);
        root.getChildren().add(z2);
        root.getChildren().add(z3);
        root.getChildren().add(z4);
        root.getChildren().add(z5);
        root.getChildren().add(z6);
        root.getChildren().add(z7);
        root.getChildren().add(z8);
        root.getChildren().add(z9);
        root.getChildren().add(add);
        root.getChildren().add(sub);
        root.getChildren().add(div);
        root.getChildren().add(gleich);
        root.getChildren().add(mult);
        root.getChildren().add(komme);
        root.getChildren().add(clear);
        root.getChildren().add(sin);
        root.getChildren().add(cos);
        root.getChildren().add(tan);

        root.getChildren().add(text);




        EventHandler eventHandler = (new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                if (e.getSource() == z0) {
                    if (isEqualClicked == true || text.getText().equals("0"))
                        text.setText("0");
                    else
                        text.setText(text.getText() + "0");

                    isEqualClicked = false;
                }
            }
        });
        EventHandler eventHandler1 = (new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                if (e.getSource() == z1) {
                    if (isEqualClicked == true || text.getText().equals("1"))
                        text.setText("1");
                    else
                        text.setText(text.getText() + "1");

                    isEqualClicked = false;
                }
            }
        });
        EventHandler eventHandler2 = (new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                if (e.getSource() == z2) {
                    if (isEqualClicked == true || text.getText().equals("2"))
                        text.setText("2");
                    else
                        text.setText(text.getText() + "2");

                    isEqualClicked = false;
                }
            }
        });
        EventHandler eventHandler3 = (new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                if (e.getSource() == z3) {
                    if (isEqualClicked == true || text.getText().equals("3"))
                        text.setText("3");
                    else
                        text.setText(text.getText() + "3");

                    isEqualClicked = false;
                }
            }
        });

        z0.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler);
        z1.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler1);
        z2.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler2);
        z3.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler3);

        primaryStage.setTitle("Calculator");
        primaryStage.setScene(new Scene(root, 255, 300));

        primaryStage.show();

    }
}
[/CODE]


----------

