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

时间:2013-10-17 16:06:56

标签: java coldfusion keytool

我正在尝试使用the instructions in this article发现Java Runtime中的受信任权限列表。当我输入以下命令时:

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

我收到以下错误:

  

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

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

我假设doc中提到了两个独立的命令:

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

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

  3. 修改

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

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

    3. 打开证书导入向导窗口,我点击了Next我看到了两个选项

      • a)根据证书类型自动选择证书存储(自动选择此选项)
      • b)将所有证书放在以下商店中
    4. 我决定选择(b)选项,但我很困惑我应该选择哪个证书库。

7 个答案:

答案 0 :(得分:29)

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

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

答案 1 :(得分:23)

您收到该错误是因为keytool可执行文件位于bin目录下,而不是示例中的lib目录。您还需要在命令行中添加keystore的位置。这里有一个很好的参考 - Jrun Help / Import certificates | Certificate stores | ColdFusion

  

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

     
      
  • 服务器配置:

         

    cf_root /运行/ JRE / LIB /安全/ cacerts中

  •   
  • JRun 4配置上的Multiserver / J2EE:

         

    jrun_root / JRE / LIB /安全/ cacerts中

  •   
  • Sun JDK安装:

         

    jdk_root / JRE / LIB /安全/ cacerts中

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

  •   

  

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

     
      
  • 服务器配置:

         

    cf_root /运行/ bin中/密钥工具

  •   
  • JRun 4配置上的Multiserver / J2EE:

         

    jrun_root / JRE / bin中/密钥工具

  •   
  • Sun JDK安装:

         

    jdk_root / bin中/密钥工具

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

  •   

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

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

您需要提供路径信息,具体取决于您运行keytool命令的位置以及证书文件所在的位置。

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

答案 2 :(得分:7)

将cmd作为以管理员身份运行运行,这对我有用

答案 3 :(得分:2)

执行以下命令:

set PATH="C:\Program Files (x86)\Java\jre7"

(在64位的情况下,以JRE为准)。

由于未设置Java Path,因此您只需在命令行执行此操作,然后执行keytool import命令。

答案 4 :(得分:1)

一个简单的错误解决方案是,您首先需要在命令提示符下更改文件夹目录。默认情况下,在命令提示符或终端(位于底部的Android Studio内部)标签中 路径设置为 C:\ Users#您选择的PC的名称\ AndroidStudioProjects#app名称\ flutter_app> 进行相应更改:- C:\ Users#您选择的PC的名称\ AndroidStudioProjects#app名称\ flutter_app> cd \

输入** cd **(在flutter_app>之后#),仅输入cd \,而不输入逗号

然后键入cd Program Files \ Java \ jre1.8.0_251 \ bin (#记住要正确检查jre的文件名)

现在键入 keytool -list -v -keystore“%USERPROFILE%.android \ debug.keystore” -alias androiddebugkey -storepass android -keypass android (不带任何空格的命令)。

screenshot of the codes to run

答案 5 :(得分:0)

我终于解决了问题!!!您首先应该通过导航到以下位置来设置系统变量的 jre 路径:

control panel > System and Security > System > Advanced system settings 

系统变量下,点击

Variable name: KEY_PATH
Variable value: C:\Program Files (x86)\Java\jre1.8.0_171\bin

变量值应为JDK的bin文件夹的路径。

然后打开命令提示符,然后将目录更改为相同的JDK的bin文件夹

C:\Program Files (x86)\Java\jre1.8.0_171\bin 

然后粘贴

keytool -list -v -keystore "C:\Users\user\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android   

注意:人们对jre和jdk感到困惑。我所做的只是严格地应用于 jre

答案 6 :(得分:0)

确保已设置JAVA_HOME以及环境变量中的路径。 PATH应该能够找到keytools.exe

打开“ Windows搜索”并搜索“环境变量”

在“系统变量”下,单击“新建...”按钮,并输入JAVA_HOME作为“变量名”,并在“变量值”下输入Java JDK目录的路径,该路径应类似于此C:\ Program Files \ Java \ jre1.8.0_231