【问题标题】:Error running Flutter Doctor on M1 Mac - Unable to find bundled Java version在 M1 Mac 上运行 Flutter Doctor 时出错 - 无法找到捆绑的 Java 版本
【发布时间】: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)

为什么还是不行?

【问题讨论】:

    标签: java flutter android-studio android-emulator apple-m1


    【解决方案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 设置正确。这些资源真的很有帮助:

    如果您已经设置了它们,请将其粘贴到终端中,仔细检查您的 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)
    

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

    这些答案也可能有帮助:

    【讨论】:

    • thks 这对我有用!我建议编写所有解决方案,而不是提供链接以使您的答案完美??
    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 2018-12-19
    • 2021-10-10
    • 2023-02-06
    • 1970-01-01
    • 2023-02-09
    • 2018-08-23
    • 2021-04-23
    相关资源
    最近更新 更多