java 如何检查JDK是为什么架构构建的?/Mac上安装的JDK是针对arm(又名arm 64)还是Intel CPU(又名amd 64)?

s3fp2yjn  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(213)

因为苹果的M1、M2…(苹果硅)它是可能的安装JDK的手臂(又名arm 64)或英特尔CPU(又名amd 64),它将只是工作,有问题告诉(其他mac上的同事)如何检查

如何检查mac上安装的JDK是arm 64还是amd 64?

1.从命令行?
1.在Java程序中?(不是操作系统架构System.getProperty("os.arch")
例如,mvn -v过去足以说明所有细节。

mvn -v
Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
Maven home: /opt/homebrew/Cellar/maven/3.9.1/libexec
Java version: 17.0.6, vendor: Amazon.com Inc., runtime: /Users/user/Library/Java/JavaVirtualMachines/corretto-17.0.6-1/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "13.4", arch: "aarch64", family: "mac"

JDK java/javac也没有给予线索。

javac -version
javac 17.0.6

java -version
openjdk version "17.0.6" 2023-01-17 LTS
OpenJDK Runtime Environment Corretto-17.0.6.10.1 (build 17.0.6+10-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.6.10.1 (build 17.0.6+10-LTS, mixed mode, sharing)

我们也有通过脚本安装的JDK,JDK安装在docker容器中。应该有一些通用的方法来检查。

xa9qqrwz

xa9qqrwz1#

如果你只需要手动检查,你可以使用file实用程序,对于可执行文件,它应该告诉你二进制文件是为什么架构构建的。
因此,假设您想知道路径上的javac,可以运行

file $(which javac)

或者更一般地说

file /path/to/your/binary

并读取其输出。
举个例子:
$ file $JAVA_HOME/bin/javac
/Users/user/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/bin/javac:Mach-O 64位可执行文件x86_64
$ file $JAVA_OTHER_HOME/bin/javac
/Users/user/Library/Java/JavaVirtualMachines/corretto-1.8.0_362-1/Contents/Home/bin/javac:Mach-O 64位可执行程序arm 64

相关问题