You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查Mac上安装的JDK是arm64还是amd64架构?

Apple Silicon Mac 上检查JDK架构的通用方法

在搭载M1/M2等Apple Silicon芯片的Mac上,可同时运行ARM64(arm)和AMD64(Intel)架构的JDK,以下是两种通用检查方式,适用于本地环境、脚本安装及Docker容器:

一、命令行检查

方法1:直接检查JDK二进制文件(最准确,跨环境通用)

使用file命令识别JDK核心二进制文件的架构,无需依赖Java自身输出:

file $(which java)

输出示例:

  • ARM64架构JDK:
    • Mac本地:/usr/bin/java: Mach-O 64-bit executable arm64
    • Linux Docker容器:/usr/bin/java: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV)
  • AMD64架构JDK(通过Rosetta运行):
    • Mac本地:/usr/bin/java: Mach-O 64-bit executable x86_64
    • Linux Docker容器:/usr/bin/java: ELF 64-bit LSB executable, x86-64, version 1 (SYSV)

方法2:通过Java内置命令输出(无需外部工具)

利用JVM的属性输出获取架构相关信息,适合无file命令的环境:

java -XshowSettings:properties -version 2>&1 | grep -E "(sun.arch.data.model|java.vm.name)"

输出解读:

  • 若java.vm.name包含AArch64或arm64,则为ARM64架构JDK
  • 若java.vm.name包含x86_64,则为AMD64架构JDK
  • sun.arch.data.model显示位数(64),需结合VM名称判断具体架构

二、Java程序内检查(禁止使用System.getProperty("os.arch"))

方法1:通过JVM版本与VM名称判断

读取JVM的版本信息和虚拟机名称,这些属性直接关联JDK自身架构,不受宿主系统干扰:

public class JdkArchChecker {
    public static void main(String[] args) {
        String vmName = System.getProperty("java.vm.name");
        String vmVersion = System.getProperty("java.vm.version");
        
        if (vmName.contains("AArch64") || vmVersion.contains("aarch64")) {
            System.out.println("JDK架构:ARM64 (aarch64)");
        } else if (vmName.contains("x86_64") || vmVersion.contains("x86_64")) {
            System.out.println("JDK架构:AMD64 (x86_64)");
        } else {
            System.out.println("无法识别的JDK架构:" + vmName + " | " + vmVersion);
        }
    }
}

方法2:通过Runtime版本信息判断

利用Runtime.version()获取JDK的版本字符串,部分发行版会在其中包含架构标识:

import java.lang.Runtime.Version;

public class JdkArchChecker {
    public static void main(String[] args) {
        Version jdkVersion = Runtime.version();
        String versionStr = jdkVersion.toString();
        
        if (versionStr.contains("aarch64")) {
            System.out.println("JDK架构:ARM64");
        } else if (versionStr.contains("x86_64")) {
            System.out.println("JDK架构:AMD64");
        } else {
            // 结合VM名称兜底判断
            String vmName = System.getProperty("java.vm.name");
            System.out.println("JDK架构:未知 | 版本信息:" + versionStr + " | VM名称:" + vmName);
        }
    }
}

内容的提问来源于stack exchange,提问作者Paul Verest on LinkedIn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:43:22