keytool 错误 bash:keytool:找不到命令

Posted

技术标签:

【中文标题】keytool 错误 bash:keytool:找不到命令【英文标题】:keytool error bash: keytool: command not found 【发布时间】: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

【问题讨论】:

【参考方案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】:

请按以下步骤操作:

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

    进入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

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

    sudo find / -name jre

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

    cd 到 keytool 位置

    然后运行 ​​./keytool

    确保将路径添加到 $PATH by

    导出 PATH=$PATH:location_to_keytool

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

    钥匙工具在哪里

    为了将来编辑你的 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

【讨论】:

以上是关于keytool 错误 bash:keytool:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章

xamarin android开发打包提示 keytool 错误:java.io.filenotfoundexception啥原因

导入证书后出现 Java Keytool 错误,“keytool 错误:java.io.FileNotFoundException & Access Denied”

是啥导致 keytool 错误“无法解密安全内容条目”?

错误:'keytool' 不是内部或外部命令、可运行程序或批处理文件

Keytool 命令中的错误

keytool -genkey 错误:密钥库文件不存在