使用捆绑在 Android Studio 中的 JDK 作为 Mac 上的 JAVA_HOME

Using JDK that is bundled inside Android Studio as JAVA_HOME on Mac

我试图打开 Android 设备监视器,Studio 向我显示了这条消息 =-O :

这让我感到惊讶,因为如果我没有安装任何 Java,我怎么能够开发 Android 应用程序?!其实AndroidStudio自带捆绑JDK/JRE(位于/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home),但是系统找不到:执行usr/libexec/java_home给出

Unable to find any JVMs matching version "(null)".
No Java runtime present, try --request to install.

$JAVA_HOME 设置为 /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home 没有帮助 — source .bash_profile 不喜欢它是一个目录。

问题:我不想安装新的 JDK 如果我已经在 Android Studio 中安装了一个。如何将其设置为系统默认值?

解决方案:

  1. Big Sur 之前的 MacOS 版本:将行 export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/ 添加到主目录中的 .bash_profile 文件。 运行 source ~/.bash_profile 更新终端。
  2. Catalina、Big Sur、Mentere 及更高版本:将第 export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home 行添加到主目录中的 .zshenv 文件。 运行 source ~/.zshenv 更新终端。

之后,运行 java -version给出了这个输出,Java开始正常执行:

openjdk version "1.8.0_112-release"
OpenJDK Runtime Environment (build 1.8.0_112-release-b06)
OpenJDK 64-Bit Server VM (build 25.112-b06, mixed mode)

至于 Android 设备监视器 — 它仍然需要这个古老的 JRE 版本 6。

我刚刚在 Big Sur 上全新安装了 Android Studio Arctic Fox 2020.3.1,我不得不使用以下内容。

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home/

关于一个略有不同的主题,即使使用正确的 JAVA_HOME~/Library/Android/sdk/tools/bin/sdkmanager 也无法启动。我必须安装“Android SDK 命令行工具(最新)”(来自 Android Studio)并改用 ~/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager

核心问题是从 Android Studio Arctic Fox 开始,捆绑的目的地 java 已更改为: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/ 到: /Applications/Android Studio.app/Contents/jre/Contents/Home/

您只需将 .bash_profile 中的 JAVA_HOME env 变量更改为新的正确路径(注意 space 字符,最简单的方法是在双引号中指定路径)。并重新启动终端或 运行 source ~/.bash_profile.

正如 dimezis 所指出的,JAVA_HOME 可能正在工作,但 /user/libexec/java_home 仍然损坏。

这是因为在Mac中,java_homeJAVA_HOME是不同的。 JAVA_HOME 是将在大多数应用程序和环境中使用的环境变量/路径,而 java_home 是系统用于 运行 java 的实际可执行文件。显然,某些 Mac 应用程序(如 Xcode)将忽略 JAVA_HOME 路径并使用 java_home 可执行文件

因此,为了在 Mac 中使用 Android Studio Embedded JDK 作为默认值 Java,请复制整个嵌入式 jdk 文件夹/Applications/Android Studio.app/Contents/jre/jdk 到默认 Java 库文件夹 /Library/Java/JavaVirtualMachines/

在此之后,将您的 .bash_profile.zshrc 设置为: export JAVA_HOME=$(/usr/libexec/java_home)

这将确保您的 JAVA_HOME 和 java_home 指向相同的 java 安装。

在我的例子中,用 \ 转义不起作用,但用 " 转义整个路径工作正常。请重新打开终端以查看更改或 运行 source ~/.zshenv 以更新终端。

export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home/"