先说结论:M1 芯片的 Mac 上跑 ARM 版 CentOS 7,再装 JDK,这条路完全走得通,但和你在 x86 电脑上装 JDK 的体验差很多。最大的坑不是 JDK 本身,而是“CentOS 7 ARM 版”和“JDK 的 ARM 版”都没你想象中那么好找。这篇文章我直接把整个流程、选型逻辑、还有我踩过的坑全部摊开讲,照着做基本能一次过。
这个场景适合谁?两类人。第一类是手里只有 M1/M2/M3 的 Mac,但公司服务器或者生产环境还是 CentOS 7,需要在本地搞一个尽量接近线上环境的 Linux 虚拟机做开发联调。第二类是单纯想在自己的 ARM 设备上体验 Linux 服务器环境,又对 CentOS 有执念的玩家。不管哪类,这篇文章的核心就三件事:ARM 版 CentOS 7 怎么选、JDK 怎么对应着选、装完之后环境怎么配才不会出幺蛾子。
1. 整体设计与思路拆解
1.1 为什么是“M1 + ARM CentOS 7”这个组合
先把这个组合的前因后果捋清楚。M1 是 Apple Silicon 架构,底层是 ARM 指令集。传统 Mac 上的 Intel 芯片是 x86_64 指令集,跑 CentOS 7 直接用 VMware Fusion 或者 Parallels 装 x86 版镜像就行。但 M1 不行,它虽然能通过模拟器跑 x86 系统,但性能损耗特别大,而且 x86 版 CentOS 7 在 M1 上的启动兼容性也一般。
所以最合理的方案就是“ARM 版 CentOS 7 跑在 ARM 虚拟化上”。M1 本身支持 ARM 虚拟化,Parallels Desktop 和 UTM 这类虚拟化工具在 M1 上可以直接创建 ARM 架构的虚拟机,Guest 系统里跑的是原生 ARM 指令,效率比模拟 x86 高太多。实测下来,在 Parallels 里跑 ARM 版 CentOS 7,CPU 性能和同配置的 ARM 云服务器差不多,日常编译、跑 Java 服务完全够用。
但这里有个先决条件:CentOS 7 官方已经停止维护了,ARM 版的镜像尤其难找。CentOS 7 的 ARM 版属于“AltArch”项目,也就是由社区维护的非 x86 架构分支,官方只提供到 7.9 版本。这个镜像的核心价值在于它能跑在树莓派、飞腾、鲲鹏这类 ARM 设备上,而我们用它跑虚拟机,本质上是借用了这套 ARM 生态。
1.2 为什么选择 ARM 版而不是 x86 模拟版
这个问题我当年纠结过,先说结论:除非你有特殊需求,否则别在 M1 上用模拟方式跑 x86_64 的 CentOS 7。原因有三点。
第一是性能。M1 的 x86 模拟靠的是 Rosetta 2 翻译,虽然日常使用体验已经很好,但在虚拟机里面跑完整系统,再叠加一层翻译,性能折扣非常明显。我实测过同一台 M1 上,ARM 版 CentOS 7 启动只要十几秒,x86 版模拟启动要一分多钟,编译 Java 项目时差距更夸张,ARM 版一次 Maven 打包 30 秒,x86 版要 2 分钟以上。
第二是兼容性。CentOS 7 的内核版本是 3.10,这个老内核在 M1 的模拟环境里经常出现兼容问题,比如网络适配器驱动不稳定、显卡输出异常等。而 ARM 版 CentOS 7 在 ARM 虚拟化下跑得就顺利很多,虚拟化层直接走 ARM 原生指令,Guest 内核不需要额外翻译。
第三是 JDK。这个可能是很多人没意识到的点。x86 版 CentOS 7 上装 JDK,你得找 x86_64 的 JDK 包;ARM 版 CentOS 7 上装 JDK,你得找 aarch64 的 JDK 包。后面的选型我详细讲,但先说结论:主流的 OpenJDK 发行版都提供 aarch64 版本,而且大部分 Java 应用不受架构影响,所以走 ARM 路线在 JDK 层面没什么障碍。
1.3 虚拟化方案选型:Parallels 还是 UTM
M1 上能跑 ARM Linux 的虚拟化工具,主流就是 Parallels Desktop 和 UTM。前者收费但对 macOS 的集成做得最好,后者免费开源基于 QEMU,可定制性更强。
我自己的选择是 Parallels Desktop。原因很简单:它针对 Apple Silicon 做了专门优化,ARM 虚拟机的创建流程几乎是傻瓜式的,安装 CentOS 7 的体验比 UTM 顺畅很多。UTM 的优点是免费,但它的配置项太底层,网络模式、虚拟磁盘格式、UEFI 启动这些都要自己调,新手容易卡住。
不过有个细节要注意:Parallels 的 ARM Linux 虚拟机无法使用“自动安装”功能,必须手动选择镜像文件并引导启动。这个后面实操部分会详细讲。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心前置:CentOS 7 ARM 版镜像与虚拟机创建
2.1 ARM 版 CentOS 7 镜像的获取途径
这是整个流程中最容易卡住的一步。很多人习惯性地去 CentOS 官网下载页面,找到的却全是 x86_64 版,然后开始怀疑人生。CentOS 7 的 ARM 镜像存放在官方 AltArch 目录下,路径大致是:
code复制http://mirror.centos.org/altarch/7/isos/aarch64/
进入这个目录后,你会看到一个 CentOS-7-aarch64-Minimal-1810.iso 文件。注意这个 1810 是版本号对应 2018 年 11 月,CentOS 7 的 ARM 后续更新时间比较滞后,实际上最终版就是 7.9,但镜像发布时写的版本号可能是早期时间。
这个镜像的体积很小,大概 900MB 左右,是 Minimal 版本,没有图形界面,正好适合做服务器环境。如果你想要更完整的版本,也有 CentOS-7-aarch64-Everything 之类的选项,但日常开发用 Minimal 就够了,因为 JDK 和它依赖的库都可以通过 yum 安装。
考虑到国内网络访问官方镜像源可能比较慢,我推荐几个替代方案。阿里云镜像站的 altarch 目录、清华 TUNA 镜像站、中科大 USTC 镜像站都同步了 CentOS 7 ARM 的 aarch64 资源。以阿里云为例,路径是:
code复制https://mirrors.aliyun.com/centos-altarch/7/isos/aarch64/
下载时注意文件名里带 aarch64 标识,这个代表 64 位 ARM 架构,CentOS 7 也支持 armhfp(32 位 ARM),但虚拟机搭建建议用 aarch64,效率更高也更好配置。
2.2 创建 ARM 虚拟机的实操步骤
镜像下载完成后,开始创建虚拟机。这里用 Parallels Desktop 作为示例,UTM 用户后面我会补充差异。
第一步,打开 Parallels,点击右上角“+”新建虚拟机。在系统选择界面,Parallels 会自动检测到 M1 架构,并列出支持的 Guest OS 类型。选择 Linux 分类下的 CentOS 7,注意不要选成 CentOS 8 或 CentOS 9,因为我们要装的就是 7。
第二步,选择“手动选择镜像文件”,直接指定你下载好的 CentOS-7-aarch64-Minimal-1810.iso。Parallels 会弹出一个警告,说这个镜像没有经过官方验证,选择“继续”即可。
第三步,配置虚拟机资源。我的建议是 CPU 给 2 核、内存 2GB 起步,如果后续要在上面跑 MyS?QL 或 Maven 构建,内存建议给到 4GB。磁盘容量默认默认 20GB 就够用了,装 JDK、MySQL 这些完全不会紧张。网络模式选择“共享网络”(Shared Network),这样虚拟机会通过 NAT 方式共享 Mac 的网络,既能上网又不占额外 IP 资源。
第四步,启动虚拟机,进入 CentOS 7 安装界面。ARM 版 CentOS 7 的安装程序和你熟悉的 x86 版几乎一样,都是 Anaconda 安装器,选择语言后进入配置,关键是“安装位置”要手动选择磁盘并点击“完成”,系统会自动分配分区方案。
安装完成后会重启进入命令行登录界面,到这里虚拟机部分就搞定了。
2.3 安装后必做的三件初始化配置
这里分享一个我自己的习惯,每次装完 CentOS 7 必做三件事,否则后面装 JDK 的时候会多踩很多坑。
第一,配置网络。CentOS 7 默认网卡设备名可能是 ens3 或者 enp0s5,不管叫什么,进入系统后先运行 ip addr 查看网卡状态。如果是 DOWN 状态,编辑 /etc/sysconfig/network-scripts/ifcfg-ens3(文件名对应你的网卡名),把 ONBOOT=no 改成 ONBOOT=yes,然后 systemctl restart network。这一步不做的后果就是后面 yum 下载 JDK 的时候发现连不上外网,特别抓狂。
第二,更换 yum 源。CentOS 7 官方源已经停止维护,直接用官方地址下载软件会一直超时,必须换成国内可用的镜像源。这个属于基础操作,先备份原始源文件,然后下载阿里云的 CentOS 7 源。ARM 版有一点不一样,它的 yum 源也要用 altarch 架构的源,不能直接用 x86 版的 BaseOS 源,否则 yum 会识别不了架构。具体方法后面章节详细讲。
第三,安装基础工具。yum install -y wget curl tar vim net-tools 这几个工具后面都会用到,先装上省得后面一次次补。
3. 核心实操:ARM 版 JDK 的安装全过程
3.1 JDK 版本选择与 ARM 架构的适配问题
JDK 官方支持的平台列表里,aarch64(64 位 ARM)是明确支持的,但不同版本和不同发行版的适配程度差异很大。结合 CentOS 7 ARM 的实际环境和我的经验,给出一份选型建议。
如果是为了兼容老项目,优先选 JDK 8。CentOS 7 上跑 JDK 8 是最常见的组合,大量企业级 Java 应用依赖 JDK 8,而且 JDK 8 在 ARM 上的稳定性和性能都已经很成熟。主流的 OpenJDK 8 发行版中,Azul Zulu 的 aarch64 构建是我实测下来最稳定的,官方下载页面提供了 Linux ARM 64-bit 的 tar.gz 包。
如果是为了新项目,JDK 11 或 JDK 17 也是不错的选择。JDK 17 是 LTS 版本,生命周期长,而且对于新特性支持比较完整。但需要注意,JDK 17 在 CentOS 7 上需要更高版本的 glibc,如果你的 CentOS 7 没有更新过系统库,可能会遇到启动报错。这个我后面会在常见问题里详细说。
JDK 21 和更新版本建议不要在这套环境上尝试,原因很简单:CentOS 7 的内核是 3.10,太老了,JDK 21 在某些场景下会依赖新的内核特性,比如 cgroup v2,一旦触发就可能出现无法识别 CPU 数量的诡异问题。
3.2 下载 ARM 版 JDK 的关键注意事项
很多人在这一步翻车。你在百度搜索“JDK 下载”,进到 Oracle 官网,下载 tar.gz 包的时候选了 Linux x64 版本,传到 ARM 虚拟机里解压后运行 java -version,发现报错:
code复制cannot execute binary file: Exec format error
这个错误的本质就是架构不匹配。网上搜出来的大量教程都是 x86 时代的,照着下载指定路径的命令,结果装了个 x86_64 的 JDK,在 ARM 系统上根本没法运行。
正确做法是去 Azul Zulu 的下载页面,选择操作系统 Linux、架构 ARM 64-bit,下载对应的 tar.gz 包。或者去 Adoptium(Eclipse Temurin)的官网,架构选 AArch64,不带 x64。如果网络环境允许,也可以在虚拟机里直接用 wget 从 Azul 的 CDN 下载,这样更省事。
我推荐一个靠谱的下载途径:在 Mac 上先下载好 JDK 的 tar.gz 包,然后通过 Parallels 的共享文件夹挂载给虚拟机。这样比在虚拟机里直接下载速度快得多,也避免了下载链接被墙或被重定向导致不完整的问题。
还有一个细节:下载完 MD5 校验值对应的文件后,不要直接解压到任意目录就不管了。最好在 /usr/local 下建立一个 java 目录统一管理,这样后面配置环境变量更清晰。
3.3 完整安装步骤:解压、配置环境变量、验证
这里给出我在 ARM CentOS 7 上安装 JDK 8 和 JDK 17 的完整过程。以 JDK 8 为例,假设下载好的文件是 zulu8.72.0.17-ca-jdk8.0.382-linux_aarch64.tar.gz。
第一步,解压到指定目录。输入以下命令:
bash复制mkdir -p /usr/local/java
tar -zxvf zulu8.72.0.17-ca-jdk8.0.382-linux_aarch64.tar.gz -C /usr/local/java
cd /usr/local/java
mv zulu8.72.0.17-ca-jdk8.0.382-linux_aarch64 jdk8
把解压后的目录重命名为 jdk8,这样后续 Java 版本升级或切换时不容易搞混。
第二步,配置环境变量。这里要分清两种情况:如果只是给当前用户配置,改 ~/.bashrc 就行;如果是给整个系统配置,改 /etc/profile。我一般直接用 /etc/profile,因为虚拟机里就我一个人用,而且以后切换用户也不用重复配置。
bash复制vi /etc/profile
在文件末尾追加以下内容:
bash复制export JAVA_HOME=/usr/local/java/jdk8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
这里有几个点需要解释。CLASSPATH 在 JDK 9 及以后其实已经不需要手动设置了,因为 JDK 9 之后引入了模块化机制,类加载路径默认包含了 lib 目录。但 JDK 8 时代的手动配置习惯我已经刻进肌肉记忆了,加上很多老项目的部署指导文档里仍然要求配置,所以保留这个设置并不冲突。PATH 前面加上 $JAVA_HOME/bin,作用是让系统优先找到我们安装的 JDK,而不是系统自带的 OpenJDK。
第三步,保存并生效配置。输入以下命令:
bash复制source /etc/profile
然后运行 java -version 验证。如果输出类似下面的信息,就说明安装成功了:
code复制openjdk version "1.8.0_382"
OpenJDK Runtime Environment (Zulu 8.72.0.17-CA-linux_aarch64) (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (Zulu 8.72.0.17-CA-linux_aarch64) (build 25.382-b05, mixed mode)
注意输出里的 64-Bit 和 aarch64,这代表你运行的确实是 ARM 64 位版本,不是 x86 模拟出来的。
第四步,验证 javac 编译器是否正常。Java 开发不仅需要运行时(java 命令),还需要编译工具(javac 命令)。运行 javac -version,如果输出版本信息就说明编译工具也装好了。
3.4 JDK 多版本切换的管理方案
实际开发中,我遇到过同一个 Mac 上不同项目的 CentOS 7 虚拟机需要不同 JDK 版本的情况。这时候如果在虚拟机里来回解压、改环境变量,非常容易搞乱。
我的做法是建立多目录共存、环境变量指向软链接的方案。具体来说:
bash复制mkdir -p /usr/local/java
tar -zxvf zulu8.xx-linux_aarch64.tar.gz -C /usr/local/java
mv zulu8.xx jdk8
tar -zxvf zulu17.xx-linux_aarch64.tar.gz -C /usr/local/java
mv zulu17.xx jdk17
# 建立默认版本软链接
ln -s /usr/local/java/jdk8 /usr/local/java/current
然后在 /etc/profile 里写入:
bash复制export JAVA_HOME=/usr/local/java/current
export PATH=$JAVA_HOME/bin:$PATH
需要切换版本时,只需要重新指定软链接:
bash复制rm /usr/local/java/current
ln -s /usr/local/java/jdk17 /usr/local/java/current
source /etc/profile
java -version
这样切换保持版本干净,不会出现 PATH 里残留旧版本 bin 目录的脏问题。
4. 常见问题与排查技巧实录
4.1 “cannot execute binary file: Exec format error”
这个报错我在前面已经提过,是架构不匹配的典型信号。当你下载了 x86_64 的 JDK 装到 ARM 系统时,运行就会报这个。排查方法很简单,先确认系统架构:
bash复制uname -m
如果输出是 aarch64,说明系统是 ARM 64 位架构。再看 JDK 包里的可执行文件是什么架构:
bash复制file $JAVA_HOME/bin/java
如果输出显示 x86-64,那么抱歉,你下载错包了。重新去 Azul 或 Adoptium 下载 aarch64 版本就行。
4.2 “Error: Could not create the Java Virtual Machine”或内存识别异常
这个问题的原因是 CentOS 7 内核版本太老(3.10)和 JDK 高版本的兼容性问题。JDK 17 以上在启动时如果遇到无法识别 cgroup 内存限制、或者容器环境下的 CPU 数量检测异常,就会报这类错。
如果必须用 JDK 17,解决办法是在启动参数里显式指定 JVM 参数:
bash复制java -XX:ActiveProcessorCount=2 -Xmx1g -jar your-app.jar
4.3 yum 源配置失败或 ARM 包找不到
安装完 JDK 后,你可能还想通过 yum 装一些依赖库,比如 fontconfig(Java 图形界面程序需要)。但 ARM 版 CentOS 7 的 yum 源不能直接用 x86 版,否则会报 “No package found” 或者 GPG 校验错误。
我的做法是手动修改 /etc/yum.repos.d/CentOS-Base.repo,把 baseurl 指向阿里云的 altarch 目录:
ini复制[base]
name=CentOS-7 - Base - Aliyun
baseurl=https://mirrors.aliyun.com/centos-altarch/7/os/aarch64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-altarch/7/os/aarch64/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-7 - Updates - Aliyun
baseurl=https://mirrors.aliyun.com/centos-altarch/7/updates/aarch64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-altarch/7/os/aarch64/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-7 - Extras - Aliyun
baseurl=https://mirrors.aliyun.com/centos-altarch/7/extras/aarch64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-altarch/7/os/aarch64/RPM-GPG-KEY-CentOS-7
修改后执行 yum clean all && yum makecache,就可以正常使用了。
4.4 Parallels 共享文件夹挂载失败
如果你像我一样,在 Mac 上下载好 JDK 包再挂载给虚拟机,可能会遇到挂载后看不到共享文件夹的问题。这个大概率是 Parallels Tools 没有安装。ARM 版 CentOS 7 安装 Parallels Tools 的方式和 x86 版一样,在 Parallels 菜单栏选择“安装 Parallels Tools”,然后虚拟机里挂载 CD 镜像,运行:
bash复制mount /dev/cdrom /mnt
cd /mnt
./install
需要注意,ARM 版 CentOS 7 的内核头文件如果没装全,Parallels Tools 安装可能失败。先执行 yum install -y kernel-devel gcc make 再重试。
如果 Parallels Tools 实在装不上,可以退而求其次,通过 scp 从 Mac 直接拷贝文件到虚拟机。在 Mac 终端执行:
bash复制scp /path/to/jdk.tar.gz root@<虚拟机IP>:/root/
前提是虚拟机的 sshd 服务已经开启。
4.5 环境变量配置后不生效
很多新手配置完 /etc/profile 后,发现重新打开终端 java 命令还是找不到。原因通常是 bash 不读取 /etc/profile,或者当前用户设置了覆盖性的 ~/.bashrc。
解决方法是把环境变量追加到 /etc/profile 后,用 . /etc/profile 手动生效一次(source 命令等价)。如果重启终端后仍然不生效,检查一下 ~/.bashrc 或 ~/.bash_profile 里有没有旧的环境变量覆盖了 PATH。
5. 版本对比与生产环境选型建议
5.1 不同 JDK 发行版在 ARM CentOS 7 上的表现
为了让读者少走弯路,我把自己实测过的几个 JDK 版本在 ARM CentOS 7 上表现做了一张对比表。
| 发行版 | 架构支持 | CentOS 7 兼容性 | 推荐场景 |
|---|---|---|---|
| Azul Zulu 8 | aarch64 | 很好,无兼容问题 | 老项目、企业级 Spring 应用 |
| Adoptium Temurin 8 | aarch64 | 很好 | 老项目、开源项目构建 |
| Azul Zulu 11 | aarch64 | 很好 | 中等规模微服务 |
| Adoptium Temurin 11 | aarch64 | 良好,个别版本需 glibc 2.17 以上 | 标准 Java 11 服务 |
| Azul Zulu 17 | aarch64 | 良好,高版本可能遇到内核兼容问题 | 新项目、Spring Boot 3 |
| Oracle JDK 8 | aarch64 | 良好 | 商业环境、需要官方支持 |
这个表格不是绝对的,我自己的经验是 Azul Zulu 在 aarch64 上兼容性最省心,尤其是老版本 JDK。因为 Azul 对 ARM 生态投入很大,很多 ARM 服务器和开发板上跑 Java 首选就是 Azul Zulu。
5.2 生产环境的 JDK 安装建议
如果你不只是在本机测试,而是想让这个 ARM CentOS 7 虚拟机作为真正的开发或测试服务器,我有几个建议。
第一,不要用 Minimal 镜像装完就裸奔。装完系统后,先执行 yum update -y 把系统包更新到最新,即便 CentOS 7 已经 EOL,但部分安全补丁还是可以通过镜像源获取的。更新后再装 JDK,能避免很多 glibc 和依赖库的兼容性报错。
第二,在 JDK 安装完成后,用 alternatives 命令管理 Java 版本会更好。CentOS 7 原生支持 alternatives 机制,当你系统里可能共存多个 JDK 时,用它注册管理可以优雅切换:
bash复制alternatives --install /usr/bin/java java /usr/local/java/jdk8/bin/java 1
alternatives --install /usr/bin/java java /usr/local/java/jdk17/bin/java 2
alternatives --config java
第三,生产环境建议在 /etc/systemd/system 下为你的 Java 应用编写 systemd 服务单元文件。这样重启虚拟机后 Java 服务自动启动,不用手动执行 nohup 命令。一个典型的服务文件这样写:
code复制[Unit]
Description=My Java App
After=network.target
[Service]
ExecStart=/usr/local/java/jdk8/bin/java -jar /opt/app/myapp.jar
Restart=always
User=root
[Install]
WantedBy=multi-user.target
5.3 为什么我建议你使用容器化方案替代
如果仅仅是想在 M1 Mac 上获取一个可用的 Java 开发环境,还有一个比虚拟机更轻量的方案:使用 Docker Desktop for Mac 直接拉取 arm64 的 centos:7 镜像,然后在容器里装 JDK。但要注意,CentOS 7 官方 Docker 镜像的 arm64 版本在 Docker Hub 上同样比较难找,而且 CentOS 7 已经 EOL,很多镜像仓库可能会下架。
如果你的应用完全是 Java 生态,我还是推荐直接使用 eclipse-temurin:8-jdk 这类多架构镜像,一条命令就能跑起来一个带 JDK 的环境,不用操心 CentOS 7 的 ARM 兼容问题。
5.4 CentOS 7 ARM 的最终宿命与替代方案
写到这里,我想说点实话。CentOS 7 在 2024 年 6 月正式停止维护,ARM 版的维护更早停滞。如果你是为了学习、测试老项目,那这套 M1 + ARM CentOS 7 + JDK 的方案还是值得一试的,它能让你在 Apple Silicon Mac 上得到一个贴近线上老环境的工作台。
但如果你是准备初始化新项目,那就别在 CentOS 7 上浪费时间了。Rocky Linux 8/9 的 ARM 版本、AlmaLinux 8/9 或 Ubuntu Server 22.04 ARM 版都是更省心的选择,前两者对 CentOS 7 的替代几乎是平行的,yum/dnf 工具链完全一致,JDK 安装方式也一样,但内核和系统库更新得多,不会遇到 JDK 17 启动失败这种破事。
6. 最终实操总结
以下是整个流程的浓缩版,可以当作 checklist 使用。
- 在 M1 Mac 上装 Parallels Desktop,创建 CentOS 7 ARM 虚拟机,镜像用官方 AltArch 目录的
CentOS-7-aarch64-Minimal-1810.iso - 安装时分配 2 核 CPU、2GB 以上内存、20GB 磁盘
- 进系统后先配置网卡 ONBOOT=yes,更换阿里云 altarch yum 源,安装基础工具
- 在 Mac 上下载 Azul Zulu 或其他发行版的 aarch64 JDK tar.gz 包
- 通过共享文件夹或 scp 把 JDK 包传到虚拟机,解压到
/usr/local/java - 编辑
/etc/profile,设置 JAVA_HOME、PATH、CLASSPATH,执行 source 生效 - 用
java -version和javac -version验证安装结果 - 如需多版本切换,用软链接或 alternatives 管理
按这个流程走,从创建虚拟机到 JDK 环境可用,整个过程在 30 分钟内能搞定,前提是网络下载顺利。
最后再分享一个小技巧。CentOS 7 ARM 版 Minimal 镜像是不带 locate 的,安装完 JDK 后建议马上执行 yum install -y mlocate && updatedb,后面你想找某个文件的时候,locate java 一秒钟出结果,比 find / -name java 硬搜快一百倍。这个习惯我保持了很多年,在服务器上排查问题时帮了大忙。
