在 M1 Mac 上运行 Flutter Doctor 时出错 - 无法找到捆绑的 Java 版本

Posted

技术标签:

【中文标题】在 M1 Mac 上运行 Flutter Doctor 时出错 - 无法找到捆绑的 Java 版本【英文标题】:Error running Flutter Doctor on M1 Mac - Unable to find bundled Java version 【发布时间】:2021-09-26 15:36:31 【问题描述】:

我该如何解决这个问题?我已经按照建议在我的 M1 Mac 上下载了 android Studio Preview

运行flutter doctor后出错

The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
[✓] Flutter (Channel beta, 2.3.0-24.1.pre, on macOS 11.4 20F71 darwin-arm,
    locale fr-FR)
[✗] Android toolchain - develop for Android devices
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
[✓] Xcode - develop for ios and macOS
[✓] Chrome - develop for the web
[!] Android Studio
    ✗ Unable to find bundled Java version.
[✓] VS Code (version 1.58.2)
[✓] Connected device (2 available)

为什么还是不行?

【问题讨论】:

【参考方案1】:

多年来,我一直在使用SDK Man,通过简单的命令来安装、更新和更改 Java 版本。它还将负责安装和环境变量设置。

Here is a simple guide for mac users

安装 sdkman 后,您可以从命令行使用它:

sdk ls java

它将返回一个包含所有可用版本的表格。 最干净的选择是最新的“官方”LTS 版本,供应商为Java.net,当前最新版本为11.0.11-open

Sdkman 还通过表格底部的命令示例帮助您,所以对于当前最新的 LTS openJDK,我会选择:

sdk install java 11.0.11-open

仅此而已。或者如果您之前安装了 java 版本(通过其他方式安装),最好将其删除。

【讨论】:

它像自制软件吗?它会为我的 M1 mac 安装最好的 Java 版本吗? 是的,非常相似,但它可以让你选择你喜欢的版本 删除旧的安装应该没有问题,因为 SDKMan 不会将 java 安装到常规位置,而是将其安装在自己的路径下,以便您以后更容易交换版本,并且只使 Java 可用通过设置环境变量到系统的其余部分。它还使拥有多个 Java 版本并在它们之间随意交换变得更容易。这是删除以前安装的官方指南:java.com/en/download/help/mac_uninstall_java.html 另外,请确保在您的机器上只安装了 SDKMan 后,您只能通过 SDKMan 命令安装、删除和在版本之间交换以避免混淆。这是一份备忘单:sdkman.io/usage 我注意到昨天的答案是“不接受”。所以这让我很好奇,从那以后出了什么问题吗?【参考方案2】:

确保您已安装 JDK (you can get it here) 并且您的 $PATH 和 $JAVA_HOME 设置正确。这些资源真的很有帮助:

https://mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/#what-is-usrlibexecjava-home http://www.sajeconsultants.com/how-to-set-java_home-on-mac-os-x/ https://docs.oracle.com/javase/9/install/installation-jdk-and-jre-macos.htm#JSJIG-GUID-5F4A0659-BFC5-4CB9-9920-D2DEABF29894 https://medium.com/notes-for-geeks/java-home-and-java-home-on-macos-f246cab643bd

如果您已经设置了它们,请将其粘贴到终端中,仔细检查您的 JAVA_HOME 发生了什么:

echo $JAVA_HOME

应该会输出这样的路径(jdk版本可能不同):

/Library/Java/JavaVirtualMachines/jdk-16.0.2.jdk/Contents/Home

如果路径看起来相同(或不同的 java 版本相同),并且您还检查了“where java”、“java -version”等,以确保终端能够很好地识别您的 java 并且没有其他明显的 java 问题,这意味着唯一剩下的就是一个一个地运行这些命令:

cd /Applications/Android\ Studio.app/Contents/jre

ln -s ../jre jdk

ln -s "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin" jdk

现在如果你运行“flutter doctor -v”,你应该不会看到 java 错误和类似的东西,而不是之前的错误:

• Java binary at: /Applications/AndroidStudio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

希望这会有所帮助!它为我解决了这个问题:)

这些答案也可能有帮助:

Unable to find bundled Java version. MacBook Air M1 Unable to find bundled Java version on Flutter Flutter-Unable to find bundled Java version(flutter doctor), after updated android studio Arctic Fox(2020.3.1) on M1 Apple Silicon

【讨论】:

thks 这对我有用!我建议编写所有解决方案,而不是提供链接以使您的答案完美??

以上是关于在 M1 Mac 上运行 Flutter Doctor 时出错 - 无法找到捆绑的 Java 版本的主要内容,如果未能解决你的问题,请参考以下文章

带有 Xcode 12.5 的 M1 Mac 从不运行 Flutter 项目

尝试使用我的 m1 mac 运行我的 Flutter 应用程序时出错

Flutter 项目无法在 Mac M1 上构建

Flutter 运行和 ipa - Mac M1 - #import <Flutter/Flutter.h>

mac m1上flutter的Java配置问题

M1 上的 Flutter:GoogleMapsBase 和 Flutter.h 从 Windows 移至 mac 后未发现错误