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

Posted

技术标签:

【中文标题】在 Mac 上使用捆绑在 Android Studio 中的 JDK 作为 JAVA_HOME【英文标题】:Using JDK that is bundled inside Android Studio as JAVA_HOME on Mac 【发布时间】:2017-08-29 21:25:46 【问题描述】:

我尝试打开 android Device Monitor,Studio 向我显示了这条消息 =-O:

这让我很惊讶,因为如果我没有安装任何 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.

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

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

【问题讨论】:

【参考方案1】:

将正确的字符串添加到.bash_profile(并使用source .bash_profile重新加载):

    Big Sur 之前的 MacOS 版本:export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/。 Catalina、Big Sur、Mentere 及以上:export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home

如果您使用的是 Catalina 及更高版本,您很可能使用 zsh 作为 shell 而不是 bash。在这种情况下,请将其添加到主目录中的 .zshrc.zprofile 而不是 .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)

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

【讨论】:

使用OpenJDK时如何获取keytool?它说“要使用 keytool 命令行工具,您需要安装 JDK” 非常有用。如果没有用户,您无法从 Oracle 站点下载 JDK 8。目前只有最新的 JDK,12 - 它不适用于我用于我的项目的 gradle 4.4.1。一团糟。自制软件也没有 JDK 8。这是有效的解决方案,感谢上帝的嵌入式 JDK! 虽然 java -version 工作正常,添加 JAVA_HOME 后 /usr/libexec/java_home 对我来说仍然失败 甜蜜。我不必重新启动我的 Mac。 对于 zsh,以下行(添加到 ~/.zshrc 文件)对我有用:export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/"【参考方案2】:

正如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 安装。

【讨论】:

【参考方案3】:

核心问题是从Android Studio北极狐开始捆绑java的目的地已经从: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/ 到: /Applications/Android Studio.app/Contents/jre/Contents/Home/

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

【讨论】:

【参考方案4】:

我刚刚在 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

【讨论】:

谢谢你,我也刚刚在 Big Sur 上安装了 Android Studio Arctic Fox。它的工作原理 拯救了我的一天!谢谢 "/Applications/Android\ Studio.app/Contents/jre/Contents/Home/" 它不工作。 @NeluB,echo $JAVA_HOMEwhich javajava --version 在你的机器上的输出是什么?当您使用它时,也可以分享ls -la /Applications/Android\ Studio.app/Contents/jre/Contents/Home/ 的输出。 我通过创建从 JRE 文件夹到新 JDK 文件夹的符号链接来解决此问题。 cd /Applications/Android\ Studio.app/Contents/jreln -s ../jre jdk。然后将 JAVA_HOME 更新回/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home。感谢fluttercorner.com/…

以上是关于在 Mac 上使用捆绑在 Android Studio 中的 JDK 作为 JAVA_HOME的主要内容,如果未能解决你的问题,请参考以下文章

使用 Mac Postgres 应用程序很难捆绑 pg

Mac 应用程序在启动时崩溃,链接框架未捆绑

在使用 Python 3 的 Mac 上没有名为“_tkinter”的模块

找不到捆绑命令 mac

如何使用 xcode5 在 Mac 应用程序中对捆绑的可执行文件进行代码签名

如何为 Mac/Windows 捆绑 Java 应用程序?