# JavaFX funktioniert nicht!



## thor_norsk (19. Jul 2022)

Guten Tag, ich bin wie in den Unterlagen beschrieben vorgegangen. Ich versuche euch zu erklären, was ich gemacht habe, und hoffe ihr könnt mir helfen.

(Betriebssystem - Debian Linux)
javafx-sdk-18.0.1 über Gluon runtergeladen und entpackt. Anschließend habe ich die x.Jar Bibliotheken in Eclipse eingebunden. Jetzt wird keine Fehlermeldung mehr angezeigt.
Anschließend VM-Argument gesetzt! (in Eclipse)

Bei der Übersetzung taucht folgender Fehler auf: Komponenten werden nicht gefunden

bash: java -version
java version "17.0.2" 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode, sharing)

bash: javac -version
javac 17.0.2

Ich vermute Java - Versionen passen nicht zusammen ? Ich überlege die ganze Zeit Eclipse-sdk zu testen.

Vielen Dank im Voraus.


----------



## yfons123 (19. Jul 2022)

dein eclipse hat ein SDK standard mäßig installiert ... die aktuelle version von eclipse hat 17 als standard was dich aber nicht stören sollte

1. neues java projekt ( MIT module-info unbedingt )
2. rechtsklick auf projekt => change nature ( ganz unten ) => add maven nature
3. das in die pom hinzufügen

```
<dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>17.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics</artifactId>
            <version>17.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-web</artifactId>
            <version>17.0.2</version>
        </dependency>
    </dependencies>
```
4. jetzt sollte im projekt links "maven dependencies" ordner aufploppen mit den ordnern drin
5. in die module info


> requires javafx.graphics;


rein schreiben
( jetzt vllt neu starten  ODER rechtsklick auf projekt => maven => updaten)
6. klasse erzeugen und extends application und dann sollte es gehen... wenn eclipse vorschlägt "add javafx to build path" dann hat es noch nicht funktioniert... das sollte es nicht tun
dann muss man noch nach justieren


----------



## KonradN (19. Jul 2022)

Generell findet sich eine sehr gute Dokumentation auf openjfx.io -  dort einfach in die Dokumentation und auf Getting Started gehen.

Dort findet man dann eigentlich alle üblichen Wege, wie du etwas aufbauen kannst.

Ich selbst würde aber immer zu einem Ansatz mit Maven oder Gradle raten.

Generell kann man sich aber auch einfach ein Rahmen für ein Projekt "klauen". Das ist bei Maven extrem gut und schön machbar.

Ich habe dazu auf GitHub z.B. ein Projekt, das man einfach für sich nutzen kann: https://github.com/kneitzel/JavaFXMavenApp
Dieses Projekt habe ich mit allem drum und dran mal zusammen gebaut und das dient mir als Basis, wenn ich was neues mit JavaFX mache.

statt dem plugin von openjfx arbeite ich mit moditect. Dies ist notwendig, wenn man alte Abhängigkeiten hat, die keine Modulbeschreibung haben.
Ich habe eigentlich alles schön gemacht, so dass da keine Warnungen groß kommen.
Enforcer Plugin damit man nicht mit zu altem Maven arbeiten kann
Maven Wrapper - man braucht also nichts außer einem Java 17 (Darauf setze ich derzeit immer auf. Aktuelle LTS und 18 hat nichts so wichtiges, neues finde ich)
Ein Plugin (Codehaus) zeigt an, wenn eine Abhängigkeit aktualisiert werden sollte.
Statische Codeanalyse (PMD und Spotbugs, Abhängigkeit zu jetbrains annotations für @NotNull / @Nullable Annotations)
Lombok und JUnit Abhängigkeiten sind drin
Es werden app-images gebaut - also auch jpackage ist konfiguriert


Also eigentlich ein Rundum Sorglos Paket, auf dem man aufsetzen kann. Readme mit Hinweisen und etwas Beispiel-Code muss ich noch einbauen...


----------



## thor_norsk (20. Jul 2022)

Guten Tag, 
da ich noch nie mit Maven gearbeitet habe, muss ich mich noch einarbeiten.
Ich habe über Bash-Terminal nachgeschaut und festgestellt, dass Jdk-17 & Jdk-18 installiert sind.
Allerdings wenn ich mit dem Befehl ,,java -version'' überprüfe, arbeitet mein System mit   ,,java version "17.0.2" 2022-01-18 LTS''
Wenn ich richtig verstanden habe, JDK beinhaltet auch SDK?


----------



## M.L. (20. Jul 2022)

thor_norsk hat gesagt.:


> Eclipse


Alternativ könnte man IntelliJ einsetzen (Community Edition, Windows 10, OpenJDK 17): New Project - JavaFX - (evtl. mit benötigten "Additional libraries") - Create - "Build Project" - Run


----------



## yfons123 (20. Jul 2022)

thor_norsk hat gesagt.:


> java -version''


interessiert eclipse 0

eclipse hat das java zeug intern


----------



## KonradN (20. Jul 2022)

thor_norsk hat gesagt.:


> Guten Tag,
> da ich noch nie mit Maven gearbeitet habe, muss ich mich noch einarbeiten.
> Ich habe über Bash-Terminal nachgeschaut und festgestellt, dass Jdk-17 & Jdk-18 installiert sind.
> Allerdings wenn ich mit dem Befehl ,,java -version'' überprüfe, arbeitet mein System mit   ,,java version "17.0.2" 2022-01-18 LTS''
> Wenn ich richtig verstanden habe, JDK beinhaltet auch SDK?


Ein JDK ist alles, was Du brauchst. In dem Zusammenhang spricht man in der Regel nicht von einem SDK. Aber das JDK ist das, was man sonst in anderen Bereichen ein SDK nennen würde / könnte. Und das JDK enthält auch die JRE - das wäre der zweite Part, den man hin und wieder im Zusammenhang mit Java findet.

Das im Pfad das java 17 enthalten ist, ist schon gut. Ggf. noch prüfen, ob eine Variable JAVA_HOME gesetzt wurde (echo $JAVA_HOME) - das wäre für maven auf der Kommandozeile hilfreich.



yfons123 hat gesagt.:


> interessiert eclipse 0
> 
> eclipse hat das java zeug intern


Nein, eclipse interessiert sich auch für ein installiertes JDK. Bei der Installation wird dann z,B. auch ein JDK mit installiert (mit dem netten Umstand, dass bei Eclipse immer von JRE die Rede ist...)

Und in eclipse kann man viele Java-Versionen einbinden so man das möchte. Das entspricht auch nicht dem "interessiert eclipse 0".


----------



## thor_norsk (21. Jul 2022)

Vielen Dank!
Die Seite vom Herrn KonradN (openjfx.io) ist super! Funktioniert sogar ohne Maven! Allerdings werde ich mich später mit Maven auch beschäftigen.


----------

