英文:
Flutter Doctor: Error when running "flutter doctor --android-licenses"
问题
当我尝试运行 "flutter doctor --android-licenses" 时,我遇到了以下错误。
错误:发生了 JNI 错误,请检查您的安装并重试
在线程 "main" 中的异常:java.lang.UnsupportedClassVersionError: com/android/prefs/AndroidLocationsProvider 已由更高版本的 Java 运行时编译(类文件版本 55.0),而此版本的 Java 运行时仅识别类文件版本高达 52.0
在 java.lang.ClassLoader.defineClass1(Native Method) 中
在 java.lang.ClassLoader.defineClass(ClassLoader.java:756)
在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
在 java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
在 java.net.URLClassLoader.access$100(URLClassLoader.java:74)
在 java.net.URLClassLoader$1.run(URLClassLoader.java:369)
在 java.net.URLClassLoader$1.run(URLClassLoader.java:363)
在 java.security.AccessController.doPrivileged(Native Method)
在 java.net.URLClassLoader.findClass(URLClassLoader.java:362)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:418)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:351)
在 java.lang.Class.getDeclaredMethods0(Native Method)
在 java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
在 java.lang.Class.privateGetMethodRecursive(Class.java:3048)
在 java.lang.Class.getMethod0(Class.java:3018)
在 java.lang.Class.getMethod(Class.java:1784)
在 sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:650)
在 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:632)
找到 Android sdkmanager 工具,但无法运行(C:\Users\Gago\AppData\Local\Android\sdk\cmdline-tools\latest\bin\sdkmanager.bat):"退出代码 1"。
尝试重新安装或更新您的 Android SDK,请访问 https://flutter.dev/docs/get-started/install/windows#android-setup 了解详细说明。
这是我的 flutter doctor:
医生总结(要查看所有详细信息,请运行 flutter doctor -v):
[√] Flutter(通道 stable,3.7.7,在 Microsoft Windows [版本 10.0.19044.2604] 上,区域设置 de-DE)
[X] Windows 版本(无法确认安装的 Windows 版本是否为 10 或更高版本)
[!] Android 工具链 - 为 Android 设备开发(Android SDK 版本 33.0.2)
X Android 许可状态未知。
运行 flutter doctor --android-licenses
以接受 SDK 许可证。
有关更多详细信息,请参阅 https://flutter.dev/docs/get-started/install/windows#android-setup 。
[√] Chrome - 用于 Web 开发
[√] Android Studio(版本 2022.1)
[√] IntelliJ IDEA Community Edition(版本 2021.2)
[√] IntelliJ IDEA Ultimate Edition(版本 2022.2)
[√] VS Code(版本 1.75.1)
[√] 连接的设备(2 可用)
[√] HTTP 主机可用性
!医生在 2 个类别中发现问题。
感激任何帮助!
我已经尝试卸载 Android Sdk 命令行工具并重新安装,但没有帮助。
我正在使用 Android Studio,我的 jdk 版本是 JDK 1.8.0_301。
英文:
I get this error when I try to run "flutter doctor --android-licenses" and I can't figure out why.
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/prefs/AndroidLocationsProvider has been compiled by a more recent version of the Java R
untime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:650)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:632)
Android sdkmanager tool was found, but failed to run (C:\\Users\\Gago\\AppData\\Local\\Android\\sdk\\cmdline-tools\\latest\\bin\\sdkmanager.bat): "exited code 1".
Try re-installing or updating your Android SDK,
visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.
Here's my flutter doctor:
Doctor summary (to see all details, run flutter doctor -v):
\[√\] Flutter (Channel stable, 3.7.7, on Microsoft Windows \[Version 10.0.19044.2604\], locale de-DE)
\[X\] Windows Version (Unable to confirm if installed Windows version is 10 or greater)
\[!\] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
X Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
\[√\] Chrome - develop for the web
\[√\] Android Studio (version 2022.1)
\[√\] IntelliJ IDEA Community Edition (version 2021.2)
\[√\] IntelliJ IDEA Ultimate Edition (version 2022.2)
\[√\] VS Code (version 1.75.1)
\[√\] Connected device (2 available)
\[√\] HTTP Host Availability
! Doctor found issues in 2 categories.
Any help is appreciated!
I already tried deinstalling Android Sdk Command line tool and reinstalling it, but it doesnt help.
I am using Android Studio and my jdk is JDK 1.8.0_301.
答案1
得分: 6
我解决了这个问题。对我有效的方法如下:
- 取消选中 Android SDK 命令行工具(最新版)
- 选中 Android SDK 命令行工具 8.0
- 点击应用
- 在Windows中,转到“C:\Users\USERNAME\AppData\Local\Android\Sdk\cmdline-tools”并将8.0文件夹重命名为“latest”
- 再次运行 Flutter doctor。
这是GitHub上@thurakhant提供的解决方案。谢谢!
英文:
I fixed the issue. What worked for me was this:
- Uncheck Android SDK command-line Tools (latest)
- Check Android SDK command-line Tools 8.0
- Click Apply
- In Windows, go to “C:\Users\USERNAME\AppData\Local\Android\Sdk\cmdline-tools” and rename the 8.0 folder to “latest”
- Run Flutter doctor again.
This is a solution by @thurakhant on github. Thank you!
答案2
得分: 2
使用完全相同的JDK和Flutter版本,我昨天在Macbook上遇到了这个问题。解决方法是访问Android Studio文件夹:
/Applications/Android Studio.app/Contents
确保有两个文件夹:“jbr”和“jre”,其中“jre”只是“jbr”的一个简单副本。
运行flutter doctor -v
命令,报告显示更改后的*"No issues found!"*。
英文:
Having the exact same JDK and flutter version I had this problem yesterday (in Macbook). The solution was to access the Android studio folder:
/Applications/Android Studio.app/Contents
And have the two "jbr" and "jre" folders there, being "jre" a mere copy of "jbr"
flutter doctor -v
command reported "No issues found!" with this change.
答案3
得分: 2
首先检查 "显示包详细信息",然后选择 Android SDK 命令行工具 8.0 版本。
英文:
First check "Show package details" and select version Android SDK command-line Tools 8.0
答案4
得分: 1
- 打开 Android Studio 并点击 SDK 管理器。
- 点击 SDK 工具,然后选择显示软件包详细信息,导航到 Android SDK 命令行工具,选择版本 8.0,然后点击应用按钮。
- 设置 JAVA_HOME 环境变量为 C:\Program Files\Android\Android Studio\jbr。
- 现在运行以下命令:
> flutter doctor --android-licenses
英文:
- Open Android Studio and Click on SDK Manager.
- Click on SDK tools, then select Show Package Details and navigate to Android SDK command-line tools, select version 8.0, and hit apply button.
- Set the Environment variable of JAVA_HOME to C:\Program Files\Android\Android Studio\jbr
- Now Run the command:
> flutter doctor --android-licenses
答案5
得分: 0
检查你的 Gradle 版本是否至少为 7.6。
android: gradle: wrapper: gradle.properties
gradle-7.6-all.zip
英文:
Check if your gradle version is at least 7.6
android : gradle : wrapper : gradle.properties
gradle-7.6-all.zip
答案6
得分: 0
下载最新的Java SDK。然后进入环境变量。在**用户变量(User)**里,添加两个变量。
- JAVA_HOME => C:\Program Files\Java\jdk-20(粘贴你的SDK路径)
- JDK_HOME => C:\Program Files\Java\jdk-20(粘贴你的SDK路径)
添加上述两个变量。我的问题就是这样解决的。
英文:
Download the latest java sdk. Then go the environment variables. Inside the User variables for User, add two variables.
- JAVA_HOME => C:\Program Files\Java\jdk-20 (Paste your sdk path)
- JDK_HOME => C:\Program Files\Java\jdk-20 (Paste your sdk path)
Add the above two variables. My problem was solved this way.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论