Keytool 未被识别为内部或外部命令

2022-08-31 23:57:55

我正在尝试使用本文中的说明在我的 Java 运行时中发现受信任的颁发机构列表。当我键入以下命令时:

C:\ColdFusion8\runtime\jre\lib>keytool -list -storepass changeit -noprompt -keystore

我得到以下错误:

“keytool”不被识别为内部或外部命令,可操作程序或批处理文件。

我检查了包含我的keytool可执行文件的目录是否在路径中。(在我的Windows 7机器上,它在)尽管如此,命令行将无法识别该命令。C:\Program Files (x86)\Java\jre6\binkeytool

我假设文档中提到了两个单独的命令:

  1. C:\CFusionMX\runtime\jre\lib>keytool -list -storepass changeit -noprompt -keystore

  2. C:\CFusionMX\runtime\jre\lib\security\cacerts

编辑:

顺便说一句,我可以使用以下过程而不是答案中提到的复杂步骤吗?

  1. 当我在浏览器中打开WSDL时,我看到了锁定图标,当我单击它时,打开了一个“证书”窗口
  2. 然后我点击“安装证书”选项

  3. 打开“证书导入向导”窗口,我单击“下一步”,我看到两个选项

    • a) 根据证书类型自动选择证书存储区(此选项是自动选择的)
    • b) 将所有证书放在以下存储区中

我决定选择选项,但我感到困惑,我应该在这里选择哪个证书存储。(b)


答案 1
  1. 将 JDK 的 /bin 文件夹添加到环境变量中。您可以在“系统设置>环境变量”下或通过 CLI 执行此操作:PATH

    set PATH=%PATH%;C:\Program Files\Java\jdk1.7.0_80\bin
    
  2. 关闭并重新打开 CLI 窗口


答案 2

您收到该错误是因为可执行文件位于目录下,而不是示例中的目录下。并且您需要在命令行中添加您的位置。这里有一个很好的参考所有这些 - Jrun帮助/导入证书|证书存储|冷聚变keytoolbinlibkeystore

缺省信任库是 JRE 的 cacerts 文件。此文件通常位于以下位置:

  • 服务器配置:

    cf_root/运行时/jre/lib/security/cacerts

  • JRun 4 上的多服务器/J2EE 配置:

    jrun_root/jre/lib/security/cacerts

  • Sun JDK 安装:

    jdk_root/jre/lib/security/cacerts

  • 请参阅其他 J2EE 应用程序服务器和 JVM 的文档


keytool 是 Java SDK 的一部分,可以在以下位置找到:

  • 服务器配置:

    cf_root/运行时/bin/keytool

  • JRun 4 上的多服务器/J2EE 配置:

    jrun_root/jre/bin/keytool

  • Sun JDK 安装:

    jdk_root/箱/钥匙工具

  • 请参阅其他 J2EE 应用程序服务器和 JVM 的文档

因此,如果您导航到可执行文件所在的目录,则命令行将如下所示:keytool

keytool -list -v -keystore JAVA_HOME\jre\lib\security\cacert -storepass changeit

您需要根据运行 keytool 命令的位置和证书文件所在的位置提供路径信息。

另外,请确保您正在更新 ColdFusion 正在使用的正确 cacerts 文件。如果您在该服务器上安装了多个 JRE。您可以从管理员的“系统信息”下验证JRE ColdFusion是否正在使用。查找 Java Home 系列。


推荐