可以在Raspberry Pi上使用JavaFX

时间:2016-04-30 22:44:27

标签: java javafx raspberry-pi

我想使用JavaFX为Raspberry Pi编写程序,但我的Raspberry Pi上的Java SDK 8似乎没有JavaFX支持。

所以我的问题是Raspberry Pi 2/3是否支持JavaFX?如果是,为什么JDK在平台上没有JavaFX库?有没有办法支持它或者值得在Raspberry PI上编写JavaFX应用程序?

正在使用的Java版本为1.8.0_65

7 个答案:

答案 0 :(得分:18)

如果您使用ten: dw 10.00 x: resw 1 movsd xmm0, [ten] movsd [x], xmm0 或更高版本,则不会在JDK中找到捆绑的JavaFX。 Oracle从8u33开始从ARM包中删除了JavaFX Embedded。有关详细信息,请查看this thread from the OpenJFX mailing list

那么,我们仍然可以在Raspberry PI上使用JavaFX吗?

嗯,当然可以。以下几种方法仍然可以在嵌入式设备上运行JavaFX:

  1. 最好的方法是安装由Gluon提供的嵌入式SDK,其中包括Oracle JDK for ARM 8u33 / Oracle Java SE Embedded 8u33 for ARM。您可以将jar复制到JDK中,并在Raspberry PI上运行JavaFX。 Gluon通过帮助用户通过插件部署JavaFX插件进一步扩展了支持。看看:

  2. 您可以使用以前版本的Oracle JDK捆绑JavaFX。
  3. 您还可以构建OpenJFX并将其添加到JDK中(不是一种简单的方法)。
  4. 如果您想了解有关嵌入式JavaFX的更多信息,可以使用以下链接:

答案 1 :(得分:5)

由于某些原因上述链接无法正常工作,但我可以从中下载 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/

重新启动Raspberry Pi和FX应用程序正常运行

答案 2 :(得分:1)

您也可以从Gluon下载预先构建的二进制文件。

http://gluonhq.com/gluon-supports-javafx-embedded-binary-builds-now-available/

答案 3 :(得分:1)

如果有人仍然到达这里,我想指出我写的一篇文章,并对此进行了充分说明:https://blogs.oracle.com/javamagazine/getting-started-with-javafx-on-raspberry-pi。正如mipa回答的那样,BellSoft LibericaJDK实际上是与Raspberry Pi上的JavaFX一起使用的完美JavaJDK。

答案 4 :(得分:0)

是的,您可以在Raspberry Pi上运行JavaFX,但默认情况下某些类库不起作用,例如Media。 目前我还在尝试使用这个Media类库来处理raspberry Pi

答案 5 :(得分:0)

是的,您可以使用JavaFx。

这是一个在Raspberry PI上启用javafx的脚本(在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

答案 6 :(得分:0)

这个问题已经有点老了,但是到今天为止,人们还可以从Bellsoft下载并安装最新的JDK,其中包括最新的JavaFX。 https://www.bell-sw.com/pages/java-11.0.2/