OpenJFX On Raspberry Pi
- 硬件:树莓派4B
- 系统:Raspberry Pi OS(64bit) beta test version
- 下载地址:https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/2020-05-27-raspios-buster-arm64.zip
想在树莓派上做一个监控软件可以实时监控PC或者MAC电脑的性能状态,最好的方法就是做个网页通过js显示并更新电脑端传来的数据。这里获取电脑端数据的方式目前有几种可行的方法,一个是通过网络:在电脑端实现一个网页实时显示数据,树莓派通过ip访问电脑端的网页来展示,或者是电脑只更新数据到某个文本文件,树莓派通过ip拿到文件再把数据放进自己的网页或其他方式展示。一个是通过USB:电脑端通过USB将数据传输给树莓派,树莓派解码后通过网页或者其他方式展示。
但是自己又不会前端开发。只是个浅浅的Java狗,怎么办。好在Java有个桌面应用程序的技术——JavaFX,相比于Java之前的AWT,Swing,JavaFX是个全新的代替,之前用过Swing,挺烂,然而JavaFX也没好到哪去,现在国内有几个人在用呢?
应该是为了推广JavaFX,Oracle从Java 8开始直接在JDK捆绑了JavaFX,所以在Mac和Windows甚至Linux上,只需要装了JDK 8 以上的版本,就可以使用JavaFX。
但是对于ARM平台,JDK并不包含JavaFX。所以在树莓派上运行JavaFX会稍微麻烦一些。一边查一边试,用了一下午终于在树莓派上运行起来了,具体方法如下。
前提
JFX 程序是提前在电脑上编写的。打包生成jar文件后拷贝到树莓派。目前没在树莓派上开发只是为了尽快实现树莓派运行JFX,后续还是要在树莓派上进行开发的,因为可能会涉及到USB串口读写等硬件相关的开发。
方法一: OpenJDK + OpenJFX
- 安装OpenJDK_11
sudo apt install openjdk-11-jdk
然后可以通过 java -version 查看java是否正常安装成功
pi@raspberrypi:~ $ java -version openjdk version "11.0.7" 2020-04-14 OpenJDK Runtime Environment (build 11.0.7+10-post-Debian-3deb10u1) OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Debian-3deb10u1, mixed mode)
- 安装OpenJFX_11
sudo apt install openjfx
OpenJFX默认安装位置: /usr/share/openjfx/
- 设置环境变量
sudo nano /etc/profile
文件尾部添加
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JFX_PATH=/usr/share/openjfx/lib
- 将打包好的jar文件解压,进入目录执行
java --module-path $JFX_PATH --add-modules javafx.controls,javafx.fxml sample.Main
sample.Main是主类的包名+类名
程序可以正常运行了。但是提示了一个Error。作为一名程序员,warning可以忍,error不行!
Error - GLX extension is not supported GLX version 1.3 or higher is required
查了一下,只需要关闭硬件加速即可。 运行时候加速 -Dprism.order=sw 参数