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

sos*_*ial 24 macos openjdk java-home android-studio

我试图打开Android设备监视器,工作室向我展示了这条消息= -O: 需要安装Java SE 6运行时错误

它让我感到惊讶,因为如果我没有安装任何Java,我怎么能够开发Android应用程序?!实际上,Android Studio附带了捆绑的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.
Run Code Online (Sandbox Code Playgroud)

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

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

sos*_*ial 43

出于某种神奇的原因,重启操作系统有所帮助.并且还加入了正确的字符串export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/.bash_profile(与重装source .bash_profile).

之后,运行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)
Run Code Online (Sandbox Code Playgroud)

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

  • 对于 zsh,以下行(添加到 ~/.zshrc 文件中)对我有用: `export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/"` (8认同)
  • 在最新的“Electric Eel”版本中,“/jre/”更改为“/jbr/”,因此现在为“export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home” (4认同)
  • 使用OpenJDK时如何获取keytool?它说“要使用 keytool 命令行工具,您需要安装 JDK” (2认同)
  • 很有用。如果没有用户,您无法从 Oracle 站点下载 JDK 8。目前只有最新的 JDK,12 - 它不适用于我用于我的项目的 gradle 4.4.1。一团糟。自制软件也没有 JDK 8。这是有效的解决方案,感谢上帝提供嵌入式 JDK! (2认同)
  • 虽然 java -version 工作正常,但添加 JAVA_HOME 后 /usr/libexec/java_home 对我来说仍然失败 (2认同)
  • 甜的。我不必重新启动我的 Mac。 (2认同)
  • 如果您使用 Catalina 及以上版本,则默认情况下您可能使用 zsh shell。因此,不要将其添加到 bash 配置文件中,而是在主目录中创建一个 .zshrc 文件。然后在终端中输入 `source ~/.zshrc` (2认同)

bus*_*lee 14

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

您只需将 JAVA_HOME 环境变量更改.bash_profile为新的正确路径(注意空格字符,最简单的方法就是用双引号指定路径)。然后重新启动终端或运行source ~/.bash_profile.


crj*_*nro 11

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

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

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

之后,设置你的.bash_profile.zshrcexport JAVA_HOME=$(/usr/libexec/java_home)

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

  • 是的,谢谢!!!尽管不是复制,最好只创建一个符号链接 `sudo ln -s /Applications/Android\ Studio.app/Contents/jbr /Library/Java/JavaVirtualMachines/android-studio.jdk` (这是 Android 的路径Studio Electric Eel。检查 Android Studio 应用文件夹中的内容以获取正确的路径)。另外,删除 JavaVirtualMachines 文件夹中可能已有的任何其他 Java 安装。 (3认同)

sol*_*our 10

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

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home/
Run Code Online (Sandbox Code Playgroud)

在稍微不同的主题上,即使使用正确的JAVA_HOME~/Library/Android/sdk/tools/bin/sdkmanager也不会开始。我必须安装“Android SDK 命令行工具(最新)”(来自 Android Studio)并使用~/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager

  • “/Applications/Android\ Studio.app/Contents/jre/Contents/Home/”它不起作用。 (2认同)
  • 我通过创建从 JRE 文件夹到新 JDK 文件夹的符号链接来修复此问题。`cd /Applications/Android\ Studio.app/Contents/jre` `ln -s ../jre jdk`。然后将 JAVA_HOME 更新回 `/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home`。感谢https://fluttercorner.com/flutter-unable-to-find-bundled-java-version-after-updated-android-studio-arctic-fox2020-3-1-on-m1-apple-silicon/ (2认同)

Yvg*_*gen 6

在我的情况下,使用 转义\ 不起作用,但使用 转义整个路径"效果很好。请重新打开终端以查看更改或运行source ~/.zshenv以更新终端。

export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home/"
Run Code Online (Sandbox Code Playgroud)


T D*_*yen 5

从 2022 年末开始,Mac User & Electric Eel+ 的答案已更改为:

导出 JAVA_HOME=导出 JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home

到主目录中的 .zshenv 文件