UnsupportedClassVersionError while 'flutter doctor --android-licenses' MacOS

回答 9 浏览 1.4万 2023-01-25

系统的设置:

  • MacOS Ventura

  • Android Studio Electric Eel

我正在我的英特尔Mac上安装Flutter。

在运行flutter doctor

其结果是这样的:

[✓] Flutter (Channel stable, 3.7.0, on macOS 13.2 22D49 darwin-x64, locale
    en-MX)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] VS Code (version 1.74.3)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

并在运行flutter doctor --android-licenses后,结果是这样的:

Exception in thread "main" java.lang.UnsupportedClassVersionError: 
com/android/prefs/AndroidLocationsProvider 
has been compiled by a more recent version of the Java Runtime (class file version 55.0),
this version of the Java Runtime only recognizes class file versions up to 52.0

我在2023年1月从这里的这个链接中安装了Mac版的Java。

有人遇到过同样的错误吗?你是如何解决的?

Pasdian 提问于2023-01-25
我刚刚留下了一个答案。请让我知道。我在用Mac工作Tomas Ward 2023-01-27
9 个回答
#1楼 已采纳
得票数 27

我将尝试给出一个更详细的解决方案:

  1. 这个链接中安装最新版本的Java SDK。
  2. 选取Java 19和x64 DMG Installer(这对我来说很有效)。
  3. 请按照安装说明进行操作。
  4. [可选]如果有必要,请按照这些说明来设置你的JAVA_HOME路径(mac)。
  5. 通过运行flutter doctor --android-licenses来测试安装。
Tomas Ward 提问于2023-01-27
这对我来说是有效的,但使用Arm 64 DMG Installer的是带有M1硅芯片的最新的Mac。JD_dev 2023-01-30
这对我来说很有效!只是需要在Linux上从Java 8更新到Java 19。我用了sdkman,效果也很好:sdk install java 19.0.2-oraclejxc 2023-03-10
#2楼
得票数 7

适用于Windows系统

  1. 从[Java SE Development Kit 19.0.2][1]下载并安装最新的JDK。

  2. 将一个系统变量设置为

    变量名称:JAVA_HOME

    变量值:C:\Program Files\Javajdk-19

  3. 添加一个路径变量名为%JAVA_HOME%\bin

  4. 现在,运行flutter doctor

希望能解决。 [1]:https://www.oracle.com/java/technologies/downloads/#jdk19-windows

abdullah_bd 提问于2023-01-31
它可以与JDK 17一起使用。nonas 2023-02-25
#3楼
得票数 5

通过 Oracle 下载安装 JDK 时,确保您在 MacOS 上拥有正确版本的最佳方法是使用 Homebrew 安装 JDK(如果您没有 Homebrew,安装说明: https://docs.brew.sh/Installation )。此外,通过这种方式保持最新状态要容易得多。

brew install openjdk

如果你安装了其他的OpenJDK版本,你可能需要链接这个正确的版本:

brew link --force openjdk@19

要使它成为你的shell的默认值,请在~/.zshrc中添加以下几行:

export JAVA_HOME="/opt/homebrew/opt/openjdk"
export PATH="$JAVA_HOME/bin:$PATH"

而后:

source ~/.zshrc

你只需要做这一次就可以了。

然后重新运行:flutter doctor --android-licenses

Juha Kervinen 提问于2023-01-31
#4楼
得票数 1

此外,根据Tomas Ward所说的关于安装最新的SDK,对于windows,我发现这个可以把JAVA_HOME添加到路径中。希望能有所帮助。

Napo 提问于2023-01-29
#5楼
得票数 0

找到了解决方法。

我需要从这里来更新JDK。

Pasdian 提问于2023-01-25
您能否编辑您的答案,说明您从哪个版本升级到哪个版本?这将使这个答案在未来更有价值,对于遇到类似问题的人来说,可以隔离他们是否遇到同样的问题,或者你的解决方案是否仍与他们有关。Jeremy Caney 2023-01-25
#6楼
得票数 0

我已经卸载了。JRE Java运行环境,它可以工作。

Amrit Randhawa 提问于2023-01-26
#7楼
得票数 0

是的,@Tomas Ward的解决方案对我来说是有效的。但让我为Windows用户补充一些细节。

  1. 正如@Tomas所说,我们需要下载Java SE Development Kit 19.0.2首先点击此链接,下载Java SE Development Kit 19.0.2。
  2. 然后下载x64 Installerx64 MSI Installer然后在您的系统中安装Java SE Development Kit。
  3. 现在,您需要设置或更新这个新的Java SE开发工具包的路径到您的JAVA_HOME路径。

当你设置/更新 JAVA_HOME 路径时,你的错误就会被解决。

Milan R Dhameliya 提问于2023-01-31
#8楼
得票数 0

我测试了更高的版本(jdk17)并成功执行。但我不认为这是一个好主意。让我们等待官方的解决方案

yangz 提问于2023-02-22
你好,感谢你加入Stack Overflow。请不要留下"答案",除非它能解决这个问题。类似于这个问题的简短信息更应该在问题下留下评论。John Leuenhagen 2023-02-28
#9楼
得票数 0

这些答案都对我不起作用。所以我最后咬咬牙,转而使用asdf。这是值得的,它将为你在未来节省很多麻烦。

  1. asdf install java adoptopenjdk-19.0.0+36
  2. asdf global java adoptopenjdk-19.0.0+36
  3. 按照这个评论的建议,把这个添加到你的.zshrc中
    # set JAVA_HOME on every change directory
    function asdf_update_java_home {
      asdf current java 2>&1 > /dev/null
      if [[ "$?" -eq 0 ]]
      then
          export JAVA_HOME=$(asdf where java)
      fi
    }
    
    precmd() { asdf_update_java_home; }
    # end set JAVA_HOME
    
  4. exec zsh # 重新加载当前终端,以使用更改后的.zshrc。
  5. echo $JAVA_HOME应显示asdf目录一
  6. flutter doctor --android-licenses

机器的细节

  • MacBook Pro M1
  • 用ZSH作为我的shell
Kyle Venn 提问于2023-03-20