Arm-Linux设备安装JDK总结
1. 前言
树莓派板子大多芯片都为arm的,我们有时候会有一些需求需要运行一些Java程序,这些Java程序会在PC上打包成jar包后放在板子上运行,而要在这样的arm-Linux设备上运行jar包的话需要简单安装jdk到开发板上,这里做一些总结说明如何在arm-Linux上安装jdk的。
2. 准备
2.1 确认cpu架构
确认环境,即使是arm,目前armv7和aarch64架构的区别也像i386和amd64一样cpu架构差异较大,目前的jdk对于armv7和armv8是不同的(可以简单理解为32位和64位的区别),如果选择了错误的jdk或者盲目复制其它开发板上的jdk运行的话可能会报错:java: cannot execute binary file: Exec format error。
Linux下可以通过如下命令确认:
uname -a
如下是rk3399和树莓派两块板子的相关信息,可以看出来其分别为aarch64和armv7l的,一般Android开发相关so时也需要注意适配不同的cpu架构:
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.4.15-v7 #42 SMP Wed Nov 8 13:46:51 CST 2017 armv7l GNU/Linux
[root@rk3399:~]# uname -a
Linux rk3399 4.4.154 #1 SMP Tue Mar 19 22:42:36 CST 2019 aarch64 GNU/Linux
2.2 下载JDK
我们在下载JDK时也是需要根据cpu架构选择的。
如下是JDK1.8(JAVA SE8)的官网的下载地址:
https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.htm
目前需要注册Oracle账号进行登录下载,比较麻烦。
下面是目前国内的镜像,使用迅雷下载比较快,目前支持JAVA SE8到16(也是之前提到的国外资源较慢时搜索一下看是否有国内镜像):
https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/
至于对jdk1.8和JAVA SE8等概念不太清晰的可以自行搜索一下。
然后根据cpu架构下载即可:
3. 安装及测试
将下载好的压缩包上传到开发板中(上传工具这里就不说了,我默认你有这个基础),然后进行解压安装即可(这里以我下载安装的arm的jdk1.8为例,其它的类似,可以将相关命令写为shell脚本,后续可一键执行):
pi@raspberrypi:~ $ tar zxvf OpenJDK8U-jdk_arm_linux_hotspot_8u292b10.tar.gz
pi@raspberrypi:~ $ sudo update-alternatives --install /usr/bin/javac javac ~/jdk8u292-b10-aarch32-20210423/bin/javac 1
update-alternatives: using /home/pi/jdk8u292-b10-aarch32-20210423/bin/javac to provide /usr/bin/javac (javac) in auto mode
pi@raspberrypi:~ $ sudo update-alternatives --install /usr/bin/java java ~/jdk8u292-b10-aarch32-20210423/bin/java 1
update-alternatives: using /home/pi/jdk8u292-b10-aarch32-20210423/bin/java to provide /usr/bin/java (java) in auto mode
测试:
pi@raspberrypi:~ $ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK Client VM (build 25.292-b10, mixed mode)
pi@raspberrypi:~ $ javac -version
javac 1.8.0_292
实际上和在Linux/unix上安装jdk等没有太大区别,只是下载的jdk不同而已,再接着就是需要时设置环境变量并使之生效即可。