在 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_home
和 JAVA_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_HOME
和 which java
和 java --version
在你的机器上的输出是什么?当您使用它时,也可以分享ls -la /Applications/Android\ Studio.app/Contents/jre/Contents/Home/
的输出。
我通过创建从 JRE 文件夹到新 JDK 文件夹的符号链接来解决此问题。 cd /Applications/Android\ Studio.app/Contents/jre
ln -s ../jre jdk
。然后将 JAVA_HOME 更新回/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home
。感谢fluttercorner.com/…以上是关于在 Mac 上使用捆绑在 Android Studio 中的 JDK 作为 JAVA_HOME的主要内容,如果未能解决你的问题,请参考以下文章
在使用 Python 3 的 Mac 上没有名为“_tkinter”的模块