使用JDK17的Keytool在CMD中生成keystore时出现问号且无法结束怎么办
Keytool生成keystore乱码、流程卡死问题解决方案
两个问题的根本原因是CMD默认GBK编码和JDK 17的UTF-8输出编码不匹配,导致提示文字乱码为问号,你输入的yes也无法被程序正确识别,因此卡在确认步骤无法结束。可选用以下任意一种方案解决:
- 方案一:临时修改CMD编码后执行命令
- 打开CMD窗口后先执行编码切换指令:
chcp 65001 - 再运行你的keytool生成命令即可,此时提示文字会正常显示中文,按要求输入信息后确认即可正常生成keystore文件
- 打开CMD窗口后先执行编码切换指令:
- 方案二:强制指定keytool输出语言为英文,避开编码冲突
运行keytool命令时追加JVM参数指定英文输出,示例命令如下,可根据你的实际需求修改alias、keystore文件名、有效期等参数:keytool -J-Duser.language=en -genkeypair -alias mykey -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore my.keystore -validity 3650
此时所有提示文字为英文,无乱码问题,确认步骤输入yes即可正常结束流程 - 方案三:使用PowerShell运行命令
直接在Windows PowerShell中执行keytool命令,PowerShell默认编码适配性更好,多数情况下不会出现乱码和确认后卡死的问题
内容的提问来源于stack exchange,提问作者Issei Nakayama
相关产品推荐
相关产品推荐

