命令行执行flutter doctor无响应原因追踪及解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命令行执行flutter doctor无响应原因追踪及解决相关的知识,希望对你有一定的参考价值。

参考技术A

  最近在学习Flutter开发,在一次配置环境的过程中遇到了一个比较尴尬的坑,不过最终还是把这个坑给填掉了,再此进行一些分享,希望后来者遇到同样的问题时可以轻松的解决。
  从下图中可以看出,前面几条 flutter doctor 命令执行的时候总是未响应,通过各种方式执行都是一样的结果,但是dart命令是能够正常执行。起初还以为是环境变量配置的有问题,但是后来把环境变量改了又改,并且把flutter包换了又换,但是现象一直未得到解决。

  遇到这种难题第一时间想到的便是百度,但是各种关键词搜索了一番之后,竟然没有找到一篇关于这种现象的解决方案,大部分都是flutter命令使用教程,如用 flutter doctor 去查看环境是否配置完成,或者通过 flutter doctor --android-licenses 命令去接受Android SDK的一些协议许可。
  后来,又尝试了必应和Google搜索,也无果之后,放弃了通过网络寻求帮助解决的方法。

  由于只有flutter的命令执行的时候无响应,所以起初认为是程序包有问题。于是通过再次解压程序压缩包和配置环境变量之后,问题仍然存在。
  随后,判断了不是程序包的问题之后开始去监控应用进程的变化。

  到这里,可以猜到很可能是由于git导致的问题,但是先前安装过flutter都没有问题,这一次重装系统之后就突然有问题了。所以就尝试着把git软件给删除并重新安装,然后奇迹的发现了 flutter doctor 命令可以正常执行了。
  于是又倒退回去复现了一下问题,发现是安装git的时候选项选的有问题导致了和flutter冲突。
  如下图,选择了 Use Window\'s default console window 的选项来安装git软件之后,git bash是直接用的window的命令窗口来执行命令。正是因为选中了这个选项所以导致flutter命令无响应的问题。
  所以如果你出现了和我一样的问题可以尝试重新安装git软件,并在这一步选择 Use MinTTY 的选项来安装。

  经过不断的试错,终于将这个问题解决了,flutter命令也可以正常执行了。如图,通过VSCode开发工具可以正常的执行 flutter create hello_flutter 创建新的flutter项目。

  遇到问题要大胆试错,只要不断的尝试就会离问题的起因更近,最后找到解决问题的办法。如果你的flutter遇到了相同的问题而又不是由于git导致的话,也可以通过类似的方式不断试错并找到最终的解决方案。也欢迎各位同行可以在评论里分享自己解决问题的方法。
  乐于分享,共同进步。

Flutter Doctor --android-licenses 问题

【中文标题】Flutter Doctor --android-licenses 问题【英文标题】:Flutter doctor --android-licenses problem 【发布时间】:2021-01-19 15:00:19 【问题描述】:

希望你们做得好。 我试图在颤振控制台中运行这个命令:

   flutter doctor --android-licenses

这是错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
        at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
        at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 5 more

我搜索了很多,但我没有找到解决方案。 有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:

我实际上找到了一半的解决方案。 我打开了 sdkmanager 然后改了这一行:

set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.."

到这里:

set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee

我也将 Execute sdkmanager 更改为:

"%JAVA_EXE%" %DEFAULT_JVM_OPTS% -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%

但它仍然无法正常工作。 这是错误:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.se.ee not found

【讨论】:

【参考方案2】:

你需要安装Android SDK Command-line tools,注意你需要确保你也安装了JavaJDK。

【讨论】:

以上是关于命令行执行flutter doctor无响应原因追踪及解决的主要内容,如果未能解决你的问题,请参考以下文章

“flutter doctor”命令找不到安装在 Android Studio 中的 Flutter 和 Dart 插件

flutter doctor 不起作用

运行flutter doctor命令检测环境是否配置成功报错及解决方案

运行 Flutter Doctor 时出现 Flutter android 许可错误

Flutter Doctor 发现问题 Android_Home

运行 flutter doctor --android-licenses 时发生异常