UnsupportedClassVersionError while 'flutter doctor --android-licenses' MacOS
系统的设置:
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。
有人遇到过同样的错误吗?你是如何解决的?
我将尝试给出一个更详细的解决方案:
Arm 64 DMG Installer
的是带有M1硅芯片的最新的Mac。
- JD_dev 2023-01-30
sdk install java 19.0.2-oracle
- jxc 2023-03-10
适用于Windows系统
从[Java SE Development Kit 19.0.2][1]下载并安装最新的JDK。
将一个系统变量设置为
变量名称:JAVA_HOME
变量值:C:\Program Files\Javajdk-19
添加一个路径变量名为
%JAVA_HOME%\bin
现在,运行
flutter doctor
希望能解决。 [1]:https://www.oracle.com/java/technologies/downloads/#jdk19-windows
通过 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
此外,根据Tomas Ward所说的关于安装最新的SDK,对于windows,我发现这个可以把JAVA_HOME添加到路径中。希望能有所帮助。
找到了解决方法。
我需要从这里来更新JDK。
我已经卸载了。JRE Java运行环境,它可以工作。
是的,@Tomas Ward的解决方案对我来说是有效的。但让我为Windows用户补充一些细节。
- 正如@Tomas所说,我们需要下载Java SE Development Kit 19.0.2首先点击此链接,下载Java SE Development Kit 19.0.2。
- 然后下载x64 Installer或x64 MSI Installer然后在您的系统中安装Java SE Development Kit。
- 现在,您需要设置或更新这个新的Java SE开发工具包的路径到您的JAVA_HOME路径。
当你设置/更新 JAVA_HOME 路径时,你的错误就会被解决。
我测试了更高的版本(jdk17)并成功执行。但我不认为这是一个好主意。让我们等待官方的解决方案
这些答案都对我不起作用。所以我最后咬咬牙,转而使用asdf。这是值得的,它将为你在未来节省很多麻烦。
asdf install java adoptopenjdk-19.0.0+36
asdf global java adoptopenjdk-19.0.0+36
- 按照这个评论的建议,把这个添加到你的.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
exec zsh
# 重新加载当前终端,以使用更改后的.zshrc。echo $JAVA_HOME
应显示asdf目录一flutter doctor --android-licenses
机器的细节
- MacBook Pro M1
- 用ZSH作为我的shell