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”