执行keytool importcert命令提示Illegal option,求故障排查方案
解决keytool命令中因路径空格导致的"illegal option"错误
我来帮你排查这个问题——这是Windows命令提示符里非常常见的路径空格处理坑!
问题根源
你的-keystore参数指向的路径C:\Program Files\Java\jdk1.8.0_161\jre\lib\security\cacerts里包含空格(Program Files),而Windows cmd默认会把空格当成命令参数的分隔符。系统会误把C:\Program识别为-keystore的合法值,然后把Files\Java\jdk1.8.0_161\jre\lib\security\cacerts当成一个额外的、不合法的命令选项,这就触发了你看到的错误。
修复方案(任选其一即可)
1. 用双引号包裹带空格的路径
这是最直观的解决方式,把整个keystore路径用双引号括起来,明确告诉cmd这是一个完整的参数:
keytool -importcert -noprompt -trustcacerts -alias microsoftgraph -file C:\Users\myuser\Desktop\cacerts.jks -keystore "C:\Program Files\Java\jdk1.8.0_161\jre\lib\security\cacerts" -storepass changeit
2. 使用Windows短路径格式
Windows对带空格的文件夹有对应的短路径(一般是前6个字符加~1),Program Files的短路径是PROGRA~1,直接替换即可:
keytool -importcert -noprompt -trustcacerts -alias microsoftgraph -file C:\Users\myuser\Desktop\cacerts.jks -keystore C:\PROGRA~1\Java\jdk1.8.0_161\jre\lib\security\cacerts -storepass changeit
3. 用脱字符(^)转义空格
在空格前面加^符号,也能让cmd把空格当成路径的一部分,而非分隔符:
keytool -importcert -noprompt -trustcacerts -alias microsoftgraph -file C:\Users\myuser\Desktop\cacerts.jks -keystore C:\Program^ Files\Java\jdk1.8.0_161\jre\lib\security\cacerts -storepass changeit
额外提示
如果之后你的-file路径也出现空格,同样可以用上面的方法处理哦!
内容的提问来源于stack exchange,提问作者Daniel Haughton
相关产品推荐
相关产品推荐

