错误:'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个回答

278

检查keytool可执行文件所在的目录是否在您的%PATH%环境变量中。

例如,在我的Windows 7机器上,它位于 C:\Program Files (x86)\Java\jre6\bin,我的%PATH%变量看起来像 C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Java\jre6\bin;C:\WINDOWS\System32\WindowsPowerShell\v1.0\(还有许多其他条目)


我输入了以下内容:C:\Program Files\Java\jdk1.6.0_21\bin>keytool -list -alias androiddebugkey -keystore .android\debug.keystore -storepass android -keypass android。但是我收到的错误信息是:keytool error: java.lang.Exception: Keystore file does not exist: .android\debug.keystore。 - Shalini
如果你这样做,它会在C:\Program Files\Java\jdk1.6.0_21\bin\.android\debug.keystore中寻找密钥库,这几乎肯定不是正确的路径。你需要给它正确的密钥库完整路径。 - Ben Williams
1
密钥库文件位于此处 C:\Documents and Settings\Shalini.android>,因此当我输入 C:\Documents and Settings\Shalini.android>keytool -list -alias androiddebugkey -keystore .android\debug.keystore -storepass android -keypass android 时,我会得到相同的错误:“keytool”不是内部或外部命令,可执行程序或批处理文件。 - Shalini
20
尝试运行以下命令:C:\Program Files\Java\jdk1.6.0_21\bin\keytool -list -alias androiddebugkey -keystore C:\Documents and Settings\Shalini\.android\debug.keystore -storepass android -keypass android - Ben Williams
1
好的,我输入了以下内容:C:\Documents and Settings\Shalini.android> C:\Program Files\Java\jdk1.6.0_21 \bin\keytool -list -alias androiddebugkey -keystore C:\Documents and Settings\Shalini.android\debug.keystore -storepass android -keypass android。但是出现了错误: 文件名、目录名或卷标语法不正确。 - Shalini
显示剩余5条评论

143

这对我有用!!:

进入此路径或您拥有keytool.exe文件的任何位置。

C:\Program Files\Java\jre7\bin

按住Shift键并右击-> 然后按在此处打开命令窗口

终端窗口将弹出,粘贴以下内容:

keytool -list -v -keystore "C:\Users\"Your-User-Name(no quotes)"\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

同时为您提供MD5和SHA1


这个方法可行,但是@Amt87的答案可以确保你在任何目录下都可以使用keytool而不必先cd到keytool所在的目录(仅适用于Windows)。在OS X(Mac)中,编辑你的.profile文件,并确保在末尾包含:$PATH,否则你将无法使用命令。(参见http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.VAfw_PldXuw) - tricknology
对我来说:C:\Program Files\Java\jdk1.8.0_281\jre\bin - Nazmul81
作为对于其他遇到同样问题的人的补充,我使用IntelliJ自带的JDK。在正确的目录下运行命令并且该目录中有keytool.exe文件,但在CMD或PowerShell中仍然提示找不到keytool。但是在IDE终端中运行却可以正常工作。 - Guilherme Taffarel Bergamin

88

找到了。

前往:

my computer->rightClick->properties->Advanced system settings->environment variables->find path in system variables->dbl click-> paste the "C:\Program Files\Java\jdk1.6.0_16\bin"->OK

前往:

cmd -> keytool -list -alias androiddebugkey -keystore "C:\Users\meee\.android\debug.keystore" -storepass android -keypass android

33
  1. Go to My computer -> right click -> system properties -> environmental variables -> Path -> add you jdk/bin to this path

    C:\Program Files\Java\jdk1.8.0_211\bin
    

*如果这个不起作用,那么

  1. In cmd set the path by using the below command

    set PATH=C:\Program Files\Java\jdk1.8.0_211\bin
    

路径已设置,现在您可以使用keytool。


谢谢,在Windows 10中我尝试了第一个解决方案,但由于某些原因没有起作用。第二个解决方案很好用。 - NineCattoRules
谢谢。第二个选项在我的 Windows 10 x64 上起作用了。 - mdhz

18

keytool 是随 Android Studio 一起安装的 JRE 的一部分,用于运行 Android Studio。

在 Windows 上,它位于:C:\Program Files\Android\Android Studio\jre\bin\keytool.exe

在 Mac 上,它位于:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool

将其添加到环境变量中,然后再次运行 keytool 命令。


非常感谢!!!对于2022年,完全可行! - aetrnm
在我的情况下,我将"C:\Program Files\Android\Android Studio\jre\bin\keytool.exe"添加为路径变量,并进行了尝试。但是,尽管我重新启动了,但它并没有像预期的那样工作。尽管我通过cmd命令行切换到C:\Program Files\Android\Android Studio\jre\bin\并确保文件keytool.exe存在,但我仍然无法正常工作。我能够使用以下cmd命令正常工作:"keytool -genkey -v -keystore %userprofile%\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload",如https://docs.flutter.dev/deployment/android#create-an-upload-keystore中所述。 - undefined

13

所以如果你现在有以下结构:

 C:\Program Files\Java\jre6\bin\
                                keytool.exe
                                debug.keystore

然后执行:

C:\Program Files\Java\jre6\bin>keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android 

我有jdk-13,但没有jre文件。我该如何解决? - raman raman
进入 C:\Softwares\jdk1.8.0_261\jre\bin 文件夹。 - Dilip Meghwal

11

在Windows 8上,进入C:\Program Files\Java\jre7\bin目录,在地址栏中输入不带引号的"cmd"。这将启动终端。然后按照此处描述的字符串进行输入。


7

你需要做的就是通过命令行导航到计算机中JRE的目标位置,一旦到达bin文件夹,输入keytool命令即可。

C:\Program Files (x86)\Java\jre7\bin>
C:\Program Files (x86)\Java\jre7\bin>keytool -list -v -keystore"%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android



Alias name: androiddebugkey
Creation date: 23 Feb, 2014
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 479d4fe7
Valid from: Sun Feb 23 06:19:02 IST 2014 until: Tue Feb 16 06:19:02 IST 2044
Certificate fingerprints:
MD5:  DB:6A:8E:48:22:5B:37:73:B1:91:EF:43:3F:26:F0:EC
SHA1: B4:6B:2E:5F:5A:30:C5:E4:E7:12:BB:F0:74:FC:2B:43:64:3A:FC:15
SHA256: CB:59:F3:20:7D:5B:87:99:6C:0D:32:79:79:CF:4E:8C:16:C2:37:81:7B:
B0:AF:D2:EC:3C:11:21:53:58:62:F6
Signature algorithm name: SHA256withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: FA 96 17 9E 94 73 C3 42   F0 4B 55 5B C7 5B EE BB  .....s.B.KU[.[..
0010: C3 E5 D3 61                                        ...a
]
]

1
这些中哪一个是关键哈希,哪一个是开发密钥哈希,哪一个是发布密钥哈希? - TPWang

7

很简单,只需找到keytool可执行文件的位置,通常在java/jre(版本)/bin中。比如,在我的电脑上,它位于C:\Program Files\Java\jre7\bin。你需要进入环境变量点击PATH使其激活,然后点击编辑,添加keytool所在的完整路径,对我而言,我会添加C:\Program Files\Java\jre7\bin,这将允许你执行keytool命令,而不必去keytool安装目录。


7

如果你想在终端的任何位置运行keytool

例如:C:>keytool

你需要添加系统变量

对于Windows:

1) create:
JAVA_HOME
C:\Program Files\Java\jdk1.7.0_45

2) add to Path
%JAVA_HOME%\bin;

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