【问题标题】:Sdkmanager "Error: Could not find or load main class com.android.sdklib.tool.sdkmanager.SdkManagerCli" on WindowsSdkmanager“错误:无法在 Windows 上找到或加载主类 com.android.sdklib.tool.sdkmanager.SdkManagerCli”
【发布时间】:2020-06-28 19:49:30
【问题描述】:

我正在尝试在没有 Android Studio 的情况下安装 Flutter,这就是我所做的:

  • 已安装 Java 8
  • 安装并解压 Flutter SDK 到C:\src
  • 已安装并解压 Android 命令行工具 (sdkmanager) 到 C:\Android
  • 添加了环境变量(ANDROID_HOME:C:\Android)

现在当我尝试运行 sdkmanager 来安装 Android SDK 时,我得到了这个错误:

"Error: Could not find or load main class com.android.sdklib.tool.sdkmanager.SdkManagerCli"

我尝试重新安装 Flutter sdk 和 sdkmanager,但没有成功。

这是 Flutter Doctor 的输出:

sdkmanager 错误:

【问题讨论】:

    标签: android android-studio flutter sdk android-sdk-manager


    【解决方案1】:

    问题可能是由于您的 sdk 安装在最终安装之前多次失败。 要检查是否是这种情况,请转到路径 C:\Users\AppData\Local\Android\Sdk ,如果有工具,tools-1,... 必要的文件安装在此文件夹的最后一个。 因此,将假定的原始文件夹 - tools 重命名为其他文件夹,并将安装完成的文件夹的名称更改为 tools。 这应该可以解决问题。

    【讨论】:

    • 这个问题已经有一个可接受的答案。
    【解决方案2】:

    转到 android sdk 文件夹。

    打开 cmdline-tools 文件夹。

    然后将“latest”文件夹重命名为“tools”。

    默认名称: (sdk的路径)\AndroidSDK\cmdline-tools\latest

    重命名后: (sdk的路径)\AndroidSDK\cmdline-tools\tools

    然后; 使用终端运行flutter doctor 命令。

    【讨论】:

    • 这个答案帮助我解决了我的问题。我已将 SDK 从一条路径移至另一条路径。谢谢@Lojith
    【解决方案3】:

    我通过删除路径中提取 cmd 工具的空间来解决此问题。 我的路径是:

    C:\Cordova Tools\cmdline-tools

    文件夹名称“Cordova Tools”中有一个空格。 我删除了空间并更改了文件夹名称,例如:

    C:\Cordova_Tools\cmdline-tools

    而且效果非常好。

    【讨论】:

      【解决方案4】:

      在 Windows Server 2019 上,使用 commandlinetools-win-6609375_latest.zip,我们遇到了同样的问题。我们将包放入Program File(即C:\Program Files\Android\cmdline-tools\tools\bin)。

      如果路径中有空格,这似乎不起作用。所以我们把它放在没有空格的文件夹路径中(即C:\Android\cmdline-tools\tools\bin),它工作正常!?

      【讨论】:

      • 这也发生在我身上。我没有将它移动到不同的路径,而是在 sdkmanager.bat 中编辑了一行,只是在 toolsdir 参数周围加上引号。像这样:set DEFAULT_JVM_OPTS=-Dcom.android.sdklib.toolsdir="%~dp0\.."
      • 谢谢!我在路径中的空格遇到了同样的问题
      • @Jan 三个小时后这有帮助
      【解决方案5】:
      1. 下载 SDK 工具 ZIP(在 https://developer.android.com/studio 的命令行工具下)。
      2. 使用 7zip 解压缩。避免使用默认的 windows 提取器 - 不能正确提取。
      3. 使用7zip解压后,将内容放入sdk文件夹(C:\Users\<username>\AppData\Local\Android\Sdk\tools\binC:\Users\<username>\AppData\Local\Android\Sdk\lib)并在命令提示符下运行sdkmanager

      【讨论】:

      • 现在看来这需要在cmdline-tools/latest而不是tools
      【解决方案6】:

      我做了这么多事情解决了这个问题。

      1. 下载 Java 8。
      2. 将 EV 设置为 Java 8 文件夹。
      3. 在单独的文件夹中下载 SDK。
      4. 在设置 SDK 的 EV 时,请确保路径中没有空格。
      5. 在用户变量中设置以下路径:
        • 构建工具。
        • 平台工具。
        • 平台
      6. 现在输入flutter doctor --android-licenses
        • 多次按y,您的许可证最终将被接受。
      7. 使用flutter doctor检查您的许可证是否被接受

      【讨论】:

        【解决方案7】:

        它对我有用。 确保 SDK 路径中的路径文件夹中没有空格。 例如:C:\Users\Anu Jadav\xyz\

        就像上面的用户名一样,我有空间,最初,我无法执行颤振医生 --android-licenses。

        在我重命名用户名之后。然后它就像一个魅力。 我用这个reference video重命名了我的用户名

        .

        【讨论】:

          【解决方案8】:

          首先打开android studio,然后从那里打开sdk manager并安装所需的sdk工具-

          1. 确保 sdk 路径中的路径文件夹中没有空格。
          2. 将 ANDROID_SDK_ROOT 变量添加到 Users 变量中,并将值作为 sdk 文件夹的路径,例如C:\users\xyz\android\sdk(这些文件夹名称中不应有空格)。
          3. 将此路径添加到系统变量中的路径变量中。
          4. 在命令提示符下运行 flutter doctor。
          5. 运行颤振医生 --android-licenses。
          6. 输入“y”接受许可。

          --设置应该已经完成​​,只需通过运行 flutter doctor 进行检查。

          【讨论】:

            【解决方案9】:

            正如@Chrishan 写的Avoid using default windows extractor

            您可以使用 PowerShell:

            Expand-Archive  commandlinetools....zip  C:\Android\Sdk
            

            【讨论】:

              【解决方案10】:

              在文本编辑器中打开sdkmanager.bat,然后在CLASSPATH=%APP_HOME%\...\sdkmanager-classpath.jar 下方添加echo %CLASSPATH%。然后运行sdkmanager --help,它将回显所需文件的 CLASSPATH。并检查它是否是有效路径。

              在我的情况下,这是错误的路径,

              它说我的sdkmanger-classpath.jarlib 文件夹中。但事实并非如此!它实际上在lib/_ 文件夹中。因此,我所做的简单解决方案是将lib/_ 文件夹中的内容复制到lib。然后效果很好!

              【讨论】:

              • BIG ITEM here is using Windows to UNZIP the archive is failed。正确使用 7-zip 将文件放在各自的文件夹中。虽然在路径上找到了很好的替代选择。
              【解决方案11】:

              我通过添加指向根文件夹(即 bin 的父级)的“--sdkroot”来修复。 例如% ./bin/sdkamanager --sdkroot 。

              【讨论】:

              • 事实是......我正在尝试 Win10,但我不太喜欢它,所以我现在回到 Linux,因此无法尝试你的答案。我接受了?
              猜你喜欢
              • 2020-12-11
              • 2014-09-22
              • 1970-01-01
              • 2016-06-12
              • 2016-03-16
              • 2016-01-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多