You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署Gradle Spring Boot应用失败求助:sh\r不存在错误

解决Gradle Spring Boot项目部署Heroku时的sh\r找不到错误

这个报错/usr/bin/env: ‘sh\r’: No such file or directory的根源很明确——你的项目里的gradlew脚本使用了Windows风格的CRLF换行符,而Heroku运行的是Linux环境,只支持Unix风格的LF换行符。Linux系统会把脚本第一行#!/usr/bin/env sh里的\r当成命令名的一部分,所以找不到sh\r这个命令。

下面是具体的解决步骤:

1. 修复gradlew的换行符

方法一:用Git自动修复并提交

如果你的项目用Git管理,可以直接用Git的换行符配置来修复:

  • 先设置Git提交时自动转换CRLF为LF:
    git config core.autocrlf input
    
  • 然后重新标准化项目里的换行符并提交:
    git add --renormalize .
    git commit -m "Fix line endings for gradlew script"
    git push heroku main
    

方法二:手动用编辑器修改

如果不用Git,直接用代码编辑器修改gradlew的换行符:

  • VS Code:打开gradlew后,点击右下角的「CRLF」按钮,切换为「LF」,然后保存文件。
  • Notepad++:打开文件后,点击「编辑」→「文档格式转换」→「转为UNIX格式」,保存即可。

2. 验证脚本的首行

确保gradlew的第一行是正确的shebang,没有多余字符:

#!/usr/bin/env sh

这行必须是文件的第一行,前面不能有空格、空行或者其他字符。

3. 提前预防后续问题

在项目根目录创建.gitattributes文件,添加以下内容,强制脚本类文件使用LF换行符:

*.sh text eol=lf
gradlew text eol=lf

这样以后无论在哪个系统上修改文件,Git都会自动保持LF换行符,避免再出现类似问题。

做完这些步骤后,重新推送代码到Heroku,应该就能正常构建了。

内容的提问来源于stack exchange,提问作者Ederson Coelho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 20:22:27