如何修复错误:JAVA_HOME 设置为无效目录Flutter android 许可证

问题描述

当我在 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 命令行工具(如下图所示) Android SDK Settings

然后观看此视频 -> https://www.youtube.com/watch?v=104dNWmM6Rs&ab_channel=CodeJava