【问题标题】:Can JavaFX be used on Raspberry PiJavaFX 可以在树莓派上使用吗
【发布时间】:2016-08-25 22:56:23
【问题描述】:

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

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

使用的Java版本是1.8.0_65

【问题讨论】:

  • 您使用的是哪个 JDK 次要版本?

标签: java javafx raspberry-pi


【解决方案1】:

如果您使用Oracle JDK for ARM 8u33 / Oracle Java SE Embedded 8u33 或更高版本,您将不会发现JavaFX 捆绑在JDK 中。 Oracle 从 8u33 开始从 ARM 包中删除了 JavaFX Embedded。欲了解更多信息,请查看this thread from the OpenJFX mailing list

那么,我们还能在 Raspberry PI 上使用 JavaFX 吗?

嗯,当然可以。 以下是一些仍然可以在嵌入式设备上运行 JavaFX 的方法:

  1. 最好的办法是安装由Gluon 提供的嵌入式SDK,其中包括用于ARM 的jfxrt.jar。您可以将 jar 复制到 JDK 并在 Raspberry PI 上运行 JavaFX。 Gluon 通过插件帮助用户在那里部署 JavaFX 插件来进一步扩展支持。看看:

  2. 您可以使用与 JavaFX 捆绑在一起的 Oracle JDK 的早期版本。
  3. 您还可以构建 OpenJFX 并将其添加到您的 JDK(这不是一个简单的方法)。

如果您想了解更多关于嵌入式 JavaFX 的信息,这些是一些有用的链接:

【讨论】:

  • “或者,您可以构建 OpenJFX 并将其添加到您的 JDK(这不是一个简单的方法)”。显然它是(很简单)——不确定 Windows——运行 sudo apt-get install openjfx 得到了我需要的一切。
  • 当我尝试 sudo apt-get install openjfx 时,我收到一条错误消息,指出它无法找到 package openjfx。
【解决方案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/

重新启动 Raspberry Pi 和 FX 应用程序运行良好

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      是的,您可以在 Raspberry Pi 上运行 JavaFX,但默认情况下某些类库将无法运行,例如 Media。 目前我仍在尝试使用这个 Media 类库来处理树莓派

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          如果有人仍然到达这里,我想指出我写的一篇文章并证明了这一点:https://blogs.oracle.com/javamagazine/getting-started-with-javafx-on-raspberry-pi。正如 mipa 所回答的,BellSoft LibericaJDK 确实是一个完美的 JavaJDK,可以在 Raspberry Pi 上与 JavaFX 一起使用。

          【讨论】:

          • 顺便说一句好文章。
          【解决方案7】:

          是的,您可以使用 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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-10
            • 1970-01-01
            • 1970-01-01
            • 2018-02-21
            • 1970-01-01
            相关资源
            最近更新 更多