Heroku CLI部署Java .war包报Error: spawn java ENOENT错误如何解决?
报错根因说明
Error: spawn java ENOENT错误的本质是Heroku CLI的Java部署插件无法在当前系统的环境变量PATH中找到java可执行程序,和CLI本身安装无关,无需重复重装CLI,按以下步骤排查即可:
排查处理步骤
1. 验证本地Java环境配置
Windows系统
- 打开CMD或PowerShell,执行命令
java -version - 若返回“java不是内部或外部命令”,说明未安装JDK或未配置环境变量:
- 安装Heroku支持的JDK版本(8/11/17均可,推荐OpenJDK或官方Oracle JDK)
- 安装完成后,将JDK安装目录下的
bin文件夹完整路径添加到系统环境变量PATH中 - 重启所有终端窗口,重新执行
java -version,确认正常返回Java版本号
Ubuntu系统
- 打开终端,执行命令
java -version - 若返回“java: command not found”,执行命令安装JDK:
sudo apt install openjdk-17-jdk - 安装完成后再次执行
java -version验证配置生效
2. 修复Heroku Java部署插件
执行命令查看已安装的插件列表:heroku plugins
- 若列表中无
@heroku-cli/plugin-java,或插件状态异常,先执行卸载命令:heroku plugins:uninstall @heroku-cli/plugin-java - 再执行安装命令重新装插件:
heroku plugins:install @heroku-cli/plugin-java
3. 排查路径特殊字符问题
如果war文件存放路径或系统用户名包含中文、空格、特殊符号,会导致插件无法正常读取文件:
- 将待部署的
store.war文件移动到无特殊字符的路径下(如Windows的C:\store.war、Ubuntu的/home/store.war)再执行部署命令
4. 手动指定Java路径绕开环境变量问题
确认Java安装正常但仍报错的情况下,可在部署命令前手动指定JAVA_HOME环境变量:
- Windows PowerShell 执行示例:
$env:JAVA_HOME="你的JDK安装绝对路径" ; heroku war:deploy store.war --app shielded-waters-44449 - Ubuntu 执行示例:
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 heroku war:deploy store.war --app shielded-waters-44449
内容的提问来源于stack exchange,提问作者JamesB
相关产品推荐
相关产品推荐

