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

Error running Flutter Doctor on M1 Mac - Unable to find bundled Java version

我该如何解决这个问题?我已经按照建议

在我的 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)

为什么还是不行?

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

Here is a simple guide for mac users

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

sdk ls java

它会 return 一个 table 所有可用的版本。 最干净的选择是最新的 'official' LTS 版本,其中供应商是 Java.net,当前最新版本是 11.0.11-open

Sdkman 还在 table 底部提供了一个命令示例,因此对于当前最新的 LTS openJDK,我会选择:

sdk install java 11.0.11-open

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

确保您安装了 JDK (you can get it here) 并且您的 $PATH 和 $JAVA_HOME 设置正确。这些资源确实可以提供帮助:

如果您已经设置好它们,请将以下内容粘贴到终端中,仔细检查您的 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 on Flutter