【问题标题】:keytool error bash: keytool: command not foundkeytool 错误 bash:keytool:找不到命令
【发布时间】:2013-04-26 08:45:46
【问题描述】:

我尝试从 Java bin 目录执行 keytool,但我收到警告 bash: keytool: command not found 的错误。

root@xxxxxx]# keytool -genkey -alias mypassword -keyalg RSA

bash: keytools: command not found

【问题讨论】:

    标签: java tomcat ssl certificate keytool


    【解决方案1】:

    使用

    ./keytool -genkey -alias mypassword -keyalg RSA
    

    【讨论】:

    • 生成的文件位置会在哪里?
    【解决方案2】:

    这些是解决我问题的步骤:

    • 搜索我的java安装路径

      find / -name jre
      
    • 移动到 java 目录(我的服务器上安装了 jre)

      cd /path/to/jre/bin
      
    • 使用 keytool 命令创建 SSL 证书

      ./keytool -genkey -alias [mypassword] -keyalg [RSA]
      

    【讨论】:

    • @user217929 怎么解决这个问题,把keytool加到$PATH,这样命令就可以从任意目录执行了?
    • export PATH=$PATH:/path/to/jre/bin 添加到您的.bashrc 文件中。
    • 注意keytool不在jre文件夹中,而是在bin文件夹中
    • 在 docker 镜像中遇到这个问题的人(我在 logstash 7.16.1 中遇到过),可以使用 RUN cd ../.. && find / -iname keytool 来找到它的正确路径并在 Dockerfile 中更改它。此外,这些调试步骤将适用于 cacert 文件。
    【解决方案3】:

    确保已安装 jre。

    cd /path/to/jre/bin/folder
    

    由于 jre 的 bin 文件夹中存在 keytool 文件,请按照上面的命令给出 bin 的路径。

    那么你可以这样做:

    keytool -genkey -alias aliaskeyname -keyalg RSA -keystore C:\mykeystore
    

    附加选项 -keystore 将帮助您指定生成自签名证书的路径。

    【讨论】:

      【解决方案4】:

      你试过了:

      sudo apt-get install oracle-java6-installer --reinstall
      

      和:

      sudo update-alternatives --config keytool
      

      【讨论】:

        【解决方案5】:

        似乎调用sudo update-alternatives --config java 会影响keytool。根据选择的 Java 版本,它会改变 keytool 是否在路径上。我不得不选择开放的 JDK 而不是 Oracle 的 JDK 才能得到bash: /usr/bin/keytool: No such file or directory

        【讨论】:

          【解决方案6】:

          请按以下步骤操作:

          1. 首先使用setDomain.sh命令设置域 去domain/bin位置执行./setDomain.sh命令

          2. 进入java/bin文件夹,执行keytool命令。

          keytool -genkey -keyalg RSA -kaysize 2048 -alias name -kaystore file.jks

          【讨论】:

            【解决方案7】:

            找到您的 jre 位置 ::sudo find / -name jre 然后::sudo update-alternatives --install /usr/bin/keytool keytool /opt/jdk/<jdk.verson>/jre/bin/keytool 100

            【讨论】:

              【解决方案8】:

              如果您正在寻找keytool,因为您正在使用 Android Studio / Google Firebase,那么 Android Studio 捆绑了一个 keytool。解压zip文件后,keytool的路径为android-studio/jre/bin

              【讨论】:

                【解决方案9】:

                Keytool 随您的 Java 库一起提供。因此,您必须从 /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/bin 目录执行 Keytool 命令。 或者您可以将 JAVA_HOME 添加到您的环境变量 (Windows) 或 ~/.bash_profile (Linux)

                【讨论】:

                  【解决方案10】:

                  你也可以像这样把它放在一行:

                  /path/to/jre/bin/keytool -genkey -alias [mypassword] -keyalg [RSA]

                  想将此作为对 piet.t 答案的评论,但我没有足够的代表发表评论。

                  请参阅本文的“签名”部分,该部分介绍了如何在不将工作目录更改为路径的情况下访问 keytool.exe: https://flutter.dev/docs/deployment/android#signing-the-app

                  请注意,他们说您可以输入空格分隔的文件夹名称,例如 /"Program Files"/ 带引号,但我发现在 bash 中我必须使用反斜杠(例如 /Program\ Files/)分隔。

                  【讨论】:

                    【解决方案11】:

                    如果您的机器上正确安装了 jre,则在 jre 或 jre/bin 中查找 keytool

                    1. 要查找 jre 的安装位置,请使用此

                      sudo find / -name jre

                    2. 然后在path_to_jre或path_to_jre/bin中寻找keytool

                    3. cd 到 keytool 位置

                    4. 然后运行 ​​./keytool

                    5. 确保将路径添加到 $PATH by

                      导出 PATH=$PATH:location_to_keytool

                    6. 为了确保你在这之后得到它,运行

                      钥匙工具在哪里

                    7. 为了将来编辑你的 bash 或 zshrc 文件并获取它

                    【讨论】:

                      【解决方案12】:

                      如果你没有使用openjdk,使用下面的命令来设置你的keytool。

                      sudo update-alternatives --install "/usr/bin/keytool" "keytool" "/usr/lib/jvm/java8/jdk1.8.0_251/bin/keytool" 1
                      

                      sudo update-alternatives --set keytool /usr/lib/jvm/java8/jdk1.8.0_251/bin/keytool
                      

                      这对我有用!

                      【讨论】:

                        【解决方案13】:

                        这对我有用

                        sudo apt install openjdk-8-jre-headless
                        

                        【讨论】:

                          猜你喜欢
                          • 2011-07-05
                          • 2022-01-18
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2016-03-24
                          • 2016-07-12
                          • 2016-11-02
                          • 1970-01-01
                          相关资源
                          最近更新 更多