Может ли JavaFX использоваться на малине Pi
Я хочу написать программу для Raspberry Pi с использованием JavaFX, но похоже, что Java SDK 8 на моей малине Pi не поддерживает JavaFX.
Итак, мой вопрос в том, поддерживается ли JavaFX на Raspberry Pi 2/3
? Если да, почему у JDK нет библиотек JavaFX на платформе? Есть ли способ поддержать его или стоит написать приложение JavaFX на малине PI?
Используемая версия Java - 1.8.0_65
.
Ответы
Ответ 1
Если вы используете Oracle JDK for ARM 8u33/Oracle Java SE Embedded 8u33
или более поздней Oracle JDK for ARM 8u33/Oracle Java SE Embedded 8u33
, вы не найдете JavaFX в комплекте JDK. Oracle удалил JavaFX Embedded из пакета ARM, начиная с 8u33. Для получения дополнительной информации см. Этот поток из списка рассылки OpenJFX.
Итак, можем ли мы по-прежнему использовать JavaFX для малины PI?
Ну, конечно, можешь. Вот несколько способов, по которым вы можете запускать JavaFX на встроенных устройствах:
-
Ваш лучший выстрел установить внедренный SDK, provied по ГЛЮОНУ, который включает в себя jfxrt.jar
для ARM. Вы можете скопировать банку в JDK и запустить JavaFX на Raspberry PI. Gluon расширяет поддержку, помогая пользователям внедрять там плагин JavaFX через плагин. Посмотри на:
- Вы можете использовать предыдущую версию Oracle JDK, которая связывает с ним JavaFX.
- Вы также можете создать OpenJFX и добавить его в свой JDK (не простой способ).
Если вы хотите узнать больше о JavaFX для встроенных, это несколько полезных ссылок:
Ответ 2
по некоторым причинам вышеуказанные ссылки не работают, но я смог скачать с
https://bitbucket.org/javafxports/arm/downloads/
затем распакуйте папку и скопируйте
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/
Перезапустить приложение для малины Pi и FX отлично работает
Ответ 3
Вы также можете загрузить предварительно созданные двоичные файлы из Gluon.
http://gluonhq.com/gluon-supports-javafx-embedded-binary-builds-now-available/
Ответ 4
Да, вы можете запускать JavaFX на Raspberry Pi, но некоторые из библиотеки классов не будут работать по умолчанию, как пример Media.
В настоящее время я все еще пытаюсь использовать эту библиотеку класса Media для работы с малиной Pi
Ответ 5
Да, вы можете использовать JavaFx.
Вот скрипт для включения javafx на Raspberry PI (проверено на растяжках)
#!/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
Ответ 6
Вопрос уже устарел, но на сегодняшний день можно также загрузить и установить последнюю версию JDK от Bellsoft, в которую также входит последняя версия JavaFX. https://www.bell-sw.com/pages/java-11.0.2/