错误:'keytool'不被识别为内部或外部命令、可操作的程序或批处理文件。

217

当我使用以下命令:

C:\>keytool -list -alias androiddebugkey 
            -keystore .android\debug.keystore 
            -storepass android -keypass android

我遇到了这个错误:

'keytool' 不是内部或外部命令,也不是可运行的程序或批处理文件。

我无法在电脑上获取证书指纹(MD5)。

我已确保密钥库文件位于正确的位置。

有任何帮助吗?


对于Flutter:我在另一个SO帖子上写了一个答案这里 - MendelG
这里的答案主要是针对Windows的,但解决PATH问题是一个常见的FAQ;一旦你理解了问题的本质,就不难为Linux等系统找到答案。基本上,如果你还没有安装keytool,就先安装它;然后,如果它被安装在的目录不在你的PATH中,就把它加进去。 - tripleee
33个回答

7

这是由于 keytool.exe 的路径未设置。

在 Windows 机器上打开命令提示符,进入您希望运行 keytool 命令的位置,然后设置 keytool.exe 所在的路径。

步骤 1:打开命令提示符并运行以下命令:

cd C:\Program Files\Java\jdk<your jdk version>\jre\lib\security

步骤二:运行以下命令来设置路径:

set PATH=C:\Program Files\Java\jdk<your jdk version>\bin

第三步: 运行keytool命令,现在它将能够识别。

keytool -list -alias <rest of the arguments>

5

确保JAVA_HOME已设置,并且环境变量中的路径反映了JAVA_HOME的bin目录。基本上,PATH应该能够在您的jdk位置找到keytools.exe文件。


5

我曾经为此苦苦寻找解决方案,最终通过首先将jre路径设置为系统变量来找到了解决方案,具体步骤如下:

control panel > System and Security > System > Advanced system settings 

在系统变量下点击新增

Variable name: KEY_PATH
Variable value: C:\Program Files (x86)\Java\jre1.8.0_171\bin

变量值应该是指向你的JDK bin文件夹的路径。

然后打开命令提示符,并将目录更改为同一JDK的bin文件夹,就像这样:

C:\Program Files (x86)\Java\jre1.8.0_171\bin 

然后在命令提示符中复制并粘贴以下代码

keytool -list -v -keystore "C:\Users\user\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android   

3
这意味着你的shell在硬盘上找不到工具。
A)
- 将工作目录更改为C:\Program Files\Java\jre6\bin\ - 执行keytool -list -alias androiddebugkey keystore <full directory name make sure that you use enclosing in quotes> -storepass android -keypass android B)
- 将C:\Program Files\Java\jre6\bin\添加到你的PATH变量中

2

我正在使用GUI工具,必须尝试使用不需要使用命令行的密钥库(keystore)。

这是一个GUI工具,用于创建 keystore.jks 和导出 pem 文件等操作。

https://keystore-explorer.org/downloads.html


2
在我的情况下,问题出在使用PowerShell而不是CMD :) 最初的回答。

1

给:

keytool -list -keystore ~/.android/debug.keystore

另外,在你的代码行中,keystore 中有一个空格。请检查一下。


1
A simple solution to this error is to first change the folder directory in the command prompt. By default, in the command prompt or terminal (inside Android Studio at the bottom tab), the path is set to "C:\Users#Name of your PC that you selected\AndroidStudioProjects#app name\flutter_app>". Change it accordingly by typing "cd\" after "flutter_app>".
Type "cd Program Files\Java\jre1.8.0_251\bin" (remember to check the file name of jre properly) and then type "keytool -list -v -keystore "%USERPROFILE%.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android" (without any space). Screenshot of the codes to run

我是一名初学的Flutter开发者,正在努力完成我的应用程序。我一直遇到这个错误,直到看到了这个答案。谢谢。 - Simeon

1

我知道已经有几个答案了,但是它们都对我没用,所以我发布了一个对我有用的答案,可能对某些人有帮助。

首先,keytool.exe所在的目录必须在路径上。

如果路径不在路径上,会出现错误,请尝试将命令行启动为普通用户,而不是管理员,或将目录更改为主目录。


1
打开"环境变量"(可以从Win10的开始菜单搜索中找到它),双重确认jdk所在的路径,确保它存在。对我来说,它显示为"...jdk1.8/bin",但是当我将其复制到Windows Explorer或命令提示符中时,它显示不存在。我检查了应该存在的位置,发现它应该是"jdk1.8.0_77"。通过在Android Studio和keytool中简单地进行设置更名,问题得以解决!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接