Sdkmanager“错误:无法在 Windows 上找到或加载主类 com.android.sdklib.tool.sdkmanager.SdkManagerCli”
Posted
技术标签:
【中文标题】Sdkmanager“错误:无法在 Windows 上找到或加载主类 com.android.sdklib.tool.sdkmanager.SdkManagerCli”【英文标题】:Sdkmanager "Error: Could not find or load main class com.android.sdklib.tool.sdkmanager.SdkManagerCli" on Windows 【发布时间】: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 错误:
【问题讨论】:
【参考方案1】:问题可能是由于您的 sdk 安装在最终安装之前多次失败。
要检查是否是这种情况,请转到路径 C:\Users
【讨论】:
这个问题已经有一个可接受的答案。【参考方案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】:
-
下载 SDK 工具 ZIP(在 https://developer.android.com/studio 的命令行工具下)。
使用 7zip 解压缩。避免使用默认的 windows 提取器 - 不能正确提取。
使用7zip解压后,将内容放入sdk文件夹(
C:\Users\<username>\AppData\Local\Android\Sdk\tools\bin
和C:\Users\<username>\AppData\Local\Android\Sdk\lib
)并在命令提示符下运行sdkmanager
。
【讨论】:
现在看来这需要在cmdline-tools/latest
而不是tools
。【参考方案6】:
我做了这么多事情解决了这个问题。
-
下载 Java 8。
将 EV 设置为 Java 8 文件夹。
在单独的文件夹中下载 SDK。
在设置 SDK 的 EV 时,请确保路径中没有空格。
在用户变量中设置以下路径:
构建工具。
平台工具。
平台
现在输入
flutter doctor --android-licenses
多次按y
,您的许可证最终将被接受。
使用flutter doctor
检查您的许可证是否被接受
【讨论】:
【参考方案7】:它对我有用。
确保 SDK 路径中的路径文件夹中没有空格。
例如:C:\Users\Anu Jadav\xyz\
就像上面的用户名一样,我有空间,最初,我无法执行颤振医生 --android-licenses。
在我重命名用户名之后。然后它就像一个魅力。 我用这个reference video重命名了我的用户名
.
【讨论】:
【参考方案8】:首先打开android studio,然后从那里打开sdk manager并安装所需的sdk工具-
-
确保 sdk 路径中的路径文件夹中没有空格。
将 ANDROID_SDK_ROOT 变量添加到 Users 变量中,并将值作为 sdk 文件夹的路径,例如C:\users\xyz\android\sdk(这些文件夹名称中不应有空格)。
将此路径添加到系统变量中的路径变量中。
在命令提示符下运行 flutter doctor。
运行颤振医生 --android-licenses。
输入“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.jar
在lib
文件夹中。但事实并非如此!它实际上在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,因此无法尝试你的答案。我接受了?以上是关于Sdkmanager“错误:无法在 Windows 上找到或加载主类 com.android.sdklib.tool.sdkmanager.SdkManagerCli”的主要内容,如果未能解决你的问题,请参考以下文章
错误:无法在 Windows cmd 的 PATH 中找到 git
如何隐藏 Android sdkmanager 下载进度条?
使用 less (2.2.1) 会引发需要 therubyracer 的错误(无法在 Windows 上安装 therubyracer)