Seit der Version 8u33 der ARM-Version von Oracle gibt es keinen Support mehr für JavaFX-Anwendungen out-of-the-box. Die offizielle Meldung dazu findet sich hier. Aus diesem Grund benötigt ein Raspberry-System eine manuelle Erweiterung. Die Voraussetzung dafür ist ein aktuelles installiertes JDK von Oracle auf dem Raspberry-System (siehe dieser Wiki-Artikel).
Herunterladen des Fixes
http://gluonhq.com/products/mobile/javafxports/get/
Hier ist die dritte Auswahlmöglichkeit (.zip) zu wählen und herunterzuladen: JavaFX Embedded SDK, (8.60.9), armv6 hard float
(Alternative zu obigem Link: https://chriswhocodes.com/)
Entpacken der zip-Datei und Verschieben in den JDK-Installationsordner
Mit folgendem Befehl lässt sich die heruntergeladene zip-Datei entpacken:
unzip armv6hf-sdk-8.60.9.zip -d /home/pi/Downloads
Mit diesem Befehl lässt sich das Installationsverzeichnis des JDK ermitteln:
readlink -f $(which java)
Unter der Annahme, dass die heruntergeladene Datei im Download-Ordner des aktuellen Benutzers abgelegt wurde, müssen die enthaltenen Dateien in die richtigen Ordner verschoben werden. Eventuell müssen die Pfade der Ziel-Ordner noch angepasst werden (wenn die installierte JDK-Version beispielsweise abweicht):
cd ~/Downloads sudo chown -R root:root armv6hf-sdk cd armv6hf-sdk sudo mv lib/javafx-mx.jar /opt/jdk1.8.0_111/lib/ cd rt/lib/ sudo mv j* /opt/jdk1.8.0_111/jre/lib/ sudo mv arm/* /opt/jdk1.8.0_111/jre/lib/arm/ sudo mv ext/* /opt/jdk1.8.0_111/jre/lib/ext/
Anpassen der Auflösung
Damit eine JavaFX-Anwedung im Vollbildmodus ausgeführt wird, kann die primaryStage der Anwendung folgendermaßen modifiziert werden:
// Set window size to fullscreen primaryStage.setMaximized(true);
primaryStage.setResizable(false);
Die zweite Anweisung verhindert das Skalieren des Fensters durch den Benutzer.
In manchen Fällen existiert trotzdem ein dicker, schwarzer Rahmen um die Anwendung herum und verhindert ein Vollbild. In diesem Fall muss in der Datei
/boot/config.txt
die Zeile
#disable_overscan=1
einkommentiert werden.
Ausführen der JavaFX-Anwendung
Weil eine JavaFX-Anwendung üblicherweise mit einer .jar-Datei gestartet wird, wird sie im Benutzerkontext gestartet. Das resultiert jedoch im Problem, dass dem Prozess die Rechte fehlen, auf (Touch)- und Mouse-Events zugreifen zu können.
Das Programm mit root-Rechten zu starten, dient als schneller Workaround:
sudo java-jar myJavaFXApp.jar