Maven & JavaFX für Werner

Erstellung des Projektes

Das Beispiel-Projekt kann man auf zwei Wegen erstellen. Zum Einen zu Fuß in der Shell, zum Anderen in NetBeans in der Oberfläche. Ich werde hier beides zeigen, weil es evtl. das Verständnis für die Mechanismen stärkt.

Mit Maven in der Shell

Damit man in der Shell in der richtigen Umgebung arbeitet (JDK etc.) ist es eine gute Idee, auch dafür ein Script zu erstellen. Dort legen wir das JDK fest, und sichern unseren Programmen zu, das korrekte Java auch zu benutzen. In "etc" legen wir eine Datei "myenv.sh" an. Es bekommt einen Parameter, damit wir zwischen JDK 8 und JDK 11 hin und her schalten können.
#!/bin/bash

export JAVA_HOME=~/Tutorial/opt/java$1
export PATH=$JAVA_HOME/bin:$PATH
In dem Terminal, in dem wir hier arbeiten, sollten wir als erstes "myenv.sh" aktivieren, und das Ergebnis auch prüfen:
. etc/myenv.sh 11
java -version
which java
Hier fällt dann hoffentlich ein openjdk version 11 heraus, und auch der Pfad zum "java" sollte unser Pfad in opt/java11 sein.
In der Shell benötigt man nur Maven selber. Hier wählt man mit den "archetype"-Parametern das Grundgerüst für die "pom.xml". Ein guter Einstieg ist von "apache.org" das "quickstart". Damit hat man ein Grundgerüst für eine einfache Bibliothek oder auch einem ausführbaren Java-Programm.
cd Entwicklung
mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-quickstart \
    -DarchetypeVersion=1.4 \
    -DgroupId=de.wh \
    -DartifactId=javafx-shell \
    -Dpackage=de.wh.javafx \
    -Dversion=2022.12
cd ..
Mit diesem Kommando erstellst du einen Ordner "javafx-shell", in dem nur 2 Sachen enthalten sind. Die sagenhafte "pom.xml" und den "src"-Ordner. Mit der "pom.xml" kann Maven eine passende jar-Datei erstellen. Im "src" befindet sich weiter unten die "App.java" Klasse. Sie enthält das typische "Hello World!". Natürlich kannst du dieses Projekt bereits mit NetBeans öffnen.
Der übliche Hergang bei Maven ist natürlich das "Erstellen" und "Laufenlassen". Also eigentlich so:
cd Entwicklung/javafx-shell
mvn package
java -jar target/javafx-shell-2022.12.jar
cd ../..
Leider führt uns die Ausführung noch nicht zum Ziel. Wir erhalten die Fehlermeldung:
kein Hauptmanifestattribut, in target/javafx-shell-2022.12.jar
Das ist aber gar kein Hexenwerk. In der "pom.xml" gibt es das PlugIn "maven-jar-plugin". Dort müssen wir nur sagen, dass wir gefälligst eine MainClass setzten wollen:
<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>de.wh.javafx.App</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
Führt man nun das "Erstellen" und "Laufenlassen" erneut aus, bekommen wir das gewünschte Ergebnis "Hello World!" in der Konsole angezeigt.
cd Entwicklung/javafx-shell
mvn package
java -jar target/javafx-shell-2022.12.jar
cd ../..
Jetzt nur noch die Einstellungen für den Java-Compiler und Java-Source in der "pom.xml" auf JDK 1.8 setzen (dort steht nämlich noch 1.7, also in der pom.xml nach maven.compiler.source suchen und Werte anpassen), fertig:
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
Zu beachten ist hier noch, dass damit nicht automatisch das JDK 1.8 verwendet wird, sondern nur, dass das verwendete JDK sich so verhalten soll!

Mit NetBeans

Die Schritte, die wir mit der Shell gemacht haben, lassen sich auch mit NetBeans durchführen. "New Project", "Java with Maven", "Project from archetype", "maven-archetype-quickstart", Parameter setzen fertig. Dazu einfach nur der Bildergalerie folgen:
Nach dem klick auf "Finish", hast du das gleiche Projekt (nur der Name ist anders, statt javafx-shell heisst es nun javafx-nb) noch einmal. Die Anpassungen für die MainClass und für die Java-Version müssen auch hier vorgenommen werden. Danach kann man in beiden Projekten weiterarbeiten.
Fertig. Weiter geht es mit Teil 3: Jetzt wird gemalt, oder zurück zu Teil 1: Entwicklungsumgebung einrichten