我无法使用keytool获取SHA1证书。

19

我正在尝试使用以下命令在macOS Sierra上查找我的签名密钥存储的SHA1哈希值:

keytool -exportcert -alias androiddebugkey -keystore $HOME/.android/debug.keystore -list -v -storepass android

结果如下:

别名名称:androiddebugkey
创建日期:2017年10月25日
输入类型:PrivateKeyEntry
证书链长度:1
证书[1]:
keytool错误: java.util.IllegalFormatConversionException: d != java.lang.String java.util.IllegalFormatConversionException: d != java.lang.String at java.base/java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4331) at java.base/java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2846) at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2800) at java.base/java.util.Formatter.format(Formatter.java:2581) at java.base/java.util.Formatter.format(Formatter.java:2517) at java.base/java.lang.String.format(String.java:2747) at java.base/sun.security.tools.keytool.Main.withWeak(Main.java:3151) at java.base/sun.security.tools.keytool.Main.printX509Cert(Main.java:3182) at java.base/sun.security.tools.keytool.Main.doPrintEntry(Main.java:1995) at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1212) at java.base/sun.security.tools.keytool.Main.run(Main.java:397) at java.base/sun.security.tools.keytool.Main.main(Main.java:390)

就我所看到的,命令是有效运行的,这不是文件或密码的问题,而是 Java 内部错误。是否缺少某些 Java 包?我正在使用 Java SDK 9.0.1。


有更简单的方法来完成它:https://dev59.com/hmUo5IYBdhLWcg3w2CWJ - denvercoder9
谢谢,说真的,我不知道该怎么做。 - Jeilson Araujo
我有同样的问题。 - Juan Labrador
1个回答

110

我发现问题出在JDK8.151JDK9的最新版Keytool上。默认情况下,keytool使用系统默认语言,但似乎在某些语言(比如我的情况是法语)上无法正常工作。

只需要使用参数-J-Duser.language=en强制输出英文即可。

因此,请尝试使用以下命令行:

keytool -J-Duser.language=en -exportcert -alias androiddebugkey -keystore $HOME/.android/debug.keystore -list -v -storepass android

请参阅我在此处的答案:https://dev59.com/_FYN5IYBdhLWcg3wopaw#47181882


3
同样的问题和你的回答对我有用。谢谢! - alan
我很高兴它有帮助。我希望他们会在下一个版本中修复它,因为这显然可能在某些情况下会成为一个阻塞性错误。 - gbaccetta
1
谢谢!对我也起作用了! - spaceman
双拇指:) - Charly

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