gradle wrapper 在 Mac m1 上报告 x86-64 架构而不是 arm-v8 架构
gradle wrapper reports x86-64 architecture instead of arm-v8 architecture on Mac m1
你好,当从 Mac m1 工作时,Gradle 包装器任务报告与 gradle 相比不正确的架构:
这是 ./gradlew clean
的结果:
operating system 'Mac OS X'
architecture 'x86-64'
osx
x86_64
x86_64
这是 gradle clean
的结果:
operating system 'Mac OS X'
architecture 'arm-v8'
osx
aarch_64
aarch64
有人对此有解释吗?
附加信息:gradle --version
的输出
------------------------------------------------------------
Gradle 7.4.2
------------------------------------------------------------
Build time: 2022-03-31 15:25:29 UTC
Revision: 540473b8118064efcc264694cbcaa4b677f61041
Kotlin: 1.5.31
Groovy: 3.0.9
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 18.0.1 (Homebrew 18.0.1+0)
OS: Mac OS X 12.2.1 aarch64
这里是我build.gradle展示架构的内容:
println org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
println org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentArchitecture;
println osdetector.os
println osdetector.arch
println System.getProperty("os.arch")
我使用 gradle wrapper
从我的 Mac m1 生成了 Gradle 包装器。
感谢@Jesper 的评论,这里是该问题的解决方案。
TL;DR
列出您系统上的 JVM 并确认您至少有一个 (arm64) JVM。
➜ ~ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
18.0.1.1 (arm64) "Oracle Corporation" - "OpenJDK 18.0.1.1" /Users/you/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
18.0.1.1 (x86_64) "Oracle Corporation" - "OpenJDK 18.0.1.1" /Users/you/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1-1/Contents/Home
18.0.1 (arm64) "Homebrew" - "OpenJDK 18.0.1" /opt/homebrew/Cellar/openjdk/18.0.1/libexec/openjdk.jdk/Contents/Home
/Users/you/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
Setup your JAVA_HOME environment variable to an arm64 JVM :
export JAVA_HOME=`export /usr/libexec/java_home -a arm64`
我的情况发生了什么:
这是由于系统上安装了多个 JVM 造成的。一些 JVM 是为 arm64 和 运行 本机编译的,而其他一些是在 "translator" (rosetta).
中为 x86_64 和 运行 编译的
- Oracle x86_64 JDK 通过 intelliJ IDEA 安装。
- 打开JDK Homebrew 作为 gradle.
的依赖项安装的 arm64
没有遵循打开的“注意事项”JDK :
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
所以安装的自制程序 gradle 正在使用安装了自制程序的 JVM。但是 gradlew 脚本使用默认的系统 JVM(Oracle x86_64 JVM)。
你好,当从 Mac m1 工作时,Gradle 包装器任务报告与 gradle 相比不正确的架构:
这是 ./gradlew clean
的结果:
operating system 'Mac OS X'
architecture 'x86-64'
osx
x86_64
x86_64
这是 gradle clean
的结果:
operating system 'Mac OS X'
architecture 'arm-v8'
osx
aarch_64
aarch64
有人对此有解释吗?
附加信息:gradle --version
------------------------------------------------------------
Gradle 7.4.2
------------------------------------------------------------
Build time: 2022-03-31 15:25:29 UTC
Revision: 540473b8118064efcc264694cbcaa4b677f61041
Kotlin: 1.5.31
Groovy: 3.0.9
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 18.0.1 (Homebrew 18.0.1+0)
OS: Mac OS X 12.2.1 aarch64
这里是我build.gradle展示架构的内容:
println org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
println org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentArchitecture;
println osdetector.os
println osdetector.arch
println System.getProperty("os.arch")
我使用 gradle wrapper
从我的 Mac m1 生成了 Gradle 包装器。
感谢@Jesper 的评论,这里是该问题的解决方案。
TL;DR
列出您系统上的 JVM 并确认您至少有一个 (arm64) JVM。
➜ ~ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
18.0.1.1 (arm64) "Oracle Corporation" - "OpenJDK 18.0.1.1" /Users/you/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
18.0.1.1 (x86_64) "Oracle Corporation" - "OpenJDK 18.0.1.1" /Users/you/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1-1/Contents/Home
18.0.1 (arm64) "Homebrew" - "OpenJDK 18.0.1" /opt/homebrew/Cellar/openjdk/18.0.1/libexec/openjdk.jdk/Contents/Home
/Users/you/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
Setup your JAVA_HOME environment variable to an arm64 JVM :
export JAVA_HOME=`export /usr/libexec/java_home -a arm64`
我的情况发生了什么:
这是由于系统上安装了多个 JVM 造成的。一些 JVM 是为 arm64 和 运行 本机编译的,而其他一些是在 "translator" (rosetta).
中为 x86_64 和 运行 编译的- Oracle x86_64 JDK 通过 intelliJ IDEA 安装。
- 打开JDK Homebrew 作为 gradle. 的依赖项安装的 arm64
没有遵循打开的“注意事项”JDK :
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
所以安装的自制程序 gradle 正在使用安装了自制程序的 JVM。但是 gradlew 脚本使用默认的系统 JVM(Oracle x86_64 JVM)。