问题描述
当我在 cmd.Flutter 中运行 Flutter doctor
时发生了整个问题。Flutter 医生将问题显示为:
Android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.3)
Android 许可证状态未知。
运行 Flutter doctor --android-licenses
以接受 SDK 许可。
有关详情,请参阅 https://flutter.dev/docs/get-started/install/windows#android-setup。
所以,我运行了 Flutter doctor --android-licenses
然后它显示输出为:
错误:JAVA_HOME 设置为无效目录:C:\Program Files\Java\jdk-16.0.1\bin
请在您的环境中设置 JAVA_HOME 变量以匹配 您的 Java 安装位置。
我尝试了很多方法,例如:将目录更改为 C:\Program Files\Java\jdk-16.0.1
(没有 bin)但是当我运行 Flutter doctor --android-licenses
时它显示
线程“main”中的异常 java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema 在 com.android.repository.api.SchemaModule$SchemaModuLeversion.(SchemaModule.java:156) 在 com.android.repository.api.SchemaModule.(SchemaModule.java:75) 在 com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81) 在 com.android.sdklib.tool.@R_394_5025@ager.@R_394_502[email protected](@R_394_502[email protected]:73) 在 com.android.sdklib.tool.@R_394_5025@ager.@R_394_502[email protected](@R_394_502[email protected]:48) 引起:java.lang.classNotFoundException:javax.xml.bind.annotation.XmlSchema 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) 在 java.base/java.lang.classLoader.loadClass(ClassLoader.java:519) ... 5个
请帮我解决这个问题,谢谢!
解决方法
我遇到了同样的问题,花了几个小时,终于解决了。我正在分享我的解决方案,因为有人可能会从中受益。
第一个问题:当我运行 flutter doctor --android-licenses
时,出现以下错误。
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
第二个问题:然后我认为它会缺少 jdk,所以我安装了 jdk 8,设置了 JAVA_HOME 环境变量并运行了 flutter doctor --android-licenses
,我得到了另一个如下所示的错误。
ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk-jdk1.8.0_29
Please set the JAVA_HOME variable in your environment to match the location of your Java installation.
解决方案:我在 Android Studio 中安装了如上图所示的 Android SDK 命令行工具,并删除了 JAVA_HOME 环境变量。然后我重新启动我的笔记本电脑,它可以工作。这个问题已经在 flutter 官方 github 上讨论过,所以这里是链接 https://github.com/flutter/flutter/issues/84325。感谢 TahaTesser 和 Pasindu Dilanka。
结论:
不需要设置外部jdk,因为
自带的默认JDK 使用 Android Studio 本身,即 java 11。
- TahaTesser
首先你需要在andriod studio中安装“Android SDK Command Line Tool”。
设置 > 系统设置 > Android SDK > SDK 工具 --> Android SDK 命令行工具(如下图所示)
然后观看此视频 -> https://www.youtube.com/watch?v=104dNWmM6Rs&ab_channel=CodeJava