Je souhaite écrire un programme pour Raspberry Pi à l'aide de JavaFX, mais il semble que Java SDK 8 sur mon Raspberry Pi ne prend pas en charge JavaFX.
Ma question est donc de savoir si JavaFX est pris en charge sur Raspberry Pi 2/3
? Si oui, pourquoi JDK n'a-t-il pas de bibliothèques JavaFX sur la plate-forme? Existe-t-il un moyen de le prendre en charge ou d’écrire une application JavaFX sur Raspberry Pi?
La version Java utilisée est 1.8.0_65
.
pour certaines raisons, les liens ci-dessus ne fonctionnent pas, mais j'ai pu télécharger à partir de https://bitbucket.org/javafxports/arm/downloads/ puis décompresser le dossier et le copier.
armv6hf-sdk/rt/lib/ext/jfxrt.jar -> jre/lib/ext/armv6hf-sdk/rt/lib/arm/***** -> jre/lib/arm/armv6hf-sdk/rt/lib/javafx.platform.properties -> jre/lib/armv6hf-sdk/rt/lib/javafx.properties -> jre/lib/armv6hf-sdk/rt/lib/jfxswt.jar -> jre/lib /
Redémarrez Raspberry Pi et FX Application a bien fonctionné
Vous pouvez également télécharger des fichiers binaires pré-construits à partir de Gluon.
http://gluonhq.com/gluon-supports-javafx-embedded-binary-builds-now-available/
Oui, vous pouvez utiliser JavaFx.
Voici un script pour activer javafx sur Raspberry Pi (testé sur Raspbian Stretch)
#!/bin/bash
# install javafx on Raspberry Pi
# WF 2019-01-13
src=/usr/local/src
ext=/usr/lib/jvm/jdk-8-Oracle-arm32-vfp-hflt/jre/lib/ext
javafx=armv6hf-sdk
#ansi colors
#http://www.csc.uvic.ca/~sae/seng265/fall04/tips/s265s047-tips/bash-using-colors.html
blue='\033[0;34m'
red='\033[0;31m'
green='\033[0;32m' # '\e[1;32m' is too bright for white bg.
endColor='\033[0m'
#
# a colored message
# params:
# 1: l_color - the color of the message
# 2: l_msg - the message to display
#
color_msg() {
local l_color="$1"
local l_msg="$2"
echo -e "${l_color}$l_msg${endColor}"
}
or
#
# show the given error message on stderr and exit
#
# params:
# 1: l_msg - the error message to display
#
error() {
local l_msg="$1"
# use ansi red for error
color_msg $red "Error:" 1>&2
color_msg $red "\t$l_msg" 1>&2
exit 1
}
#
# error
#
# show the given error message on stderr and exit
#
# params:
# 1: l_msg - the error message to display
#
error() {
local l_msg="$1"
# use ansi red for error
color_msg $red "Error:" 1>&2
color_msg $red "\t$l_msg" 1>&2
exit 1
}
color_msg $blue "Trying to install javafx"
if [ ! -d $ext ]
then
error "directory $ext does not exists - was expecting a Java installation"
fi
if [ ! -d $src ]
then
error "directory $src is missing - was expecting it"
fi
cd $src
if [ ! -f $javafx.Zip ]
then
color_msg $blue "downloading $javafx.Zip"
Sudo curl -L https://gluonhq.com/download/javafx-embedded-sdk/ -o $javafx.Zip
else
color_msg $green "$javafx.Zip already downloaded"
fi
if [ ! -d $javafx ]
then
color_msg $blue "extracting" $javafx.Zip
Sudo unzip $javafx.Zip
else
color_msg $green "$javafx already extracted"
fi
cd $ext
color_msg $blue "creating symlinks"
for path in rt/lib/arm rt/lib/ext/jfxrt.jar lib/javafx-mx.jar lib7JFX rt/lib/jfxswt.jar
do
from=$src/$javafx/$path
b=$(basename $from)
if [ -L $b ]
then
color_msg $green "symbolic link $b already exists"
else
Sudo ln -s $src/$javafx/$path .
fi
done
Oui, vous pouvez exécuter JavaFX sur Raspberry Pi, mais certaines bibliothèques de classes ne fonctionneront pas par défaut, comme exemple Media. Actuellement, j'essaie encore d'utiliser cette bibliothèque de classes Media pour travailler sur Raspberry Pi.