部署SpringBoot+MySQL到Heroku失败:git push被拒绝求助
解决Heroku部署SpringBoot应用时推送失败的问题
核心问题分析
错误日志里的关键信息是Fatal error compiling: invalid target release: 18,说明你的项目指定编译目标为Java 18,但Heroku构建环境默认不支持该版本,或未明确配置使用该版本。
解决方案
方案一:降低项目的Java目标版本
修改项目的pom.xml文件,将编译目标版本调整为Heroku支持的稳定版本(比如Java 17或11):
- 找到
maven-compiler-plugin的配置块,修改source和target值:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>17</source> <target>17</target> </configuration> </plugin>
- 如果是Spring Boot项目,同时在
properties节点中统一设置Java版本:
<properties> <java.version>17</java.version> <!-- 其他属性... --> </properties>
- 提交修改并重新推送:
git add pom.xml git commit -m "调整Java编译版本为17以适配Heroku环境" git push heroku master
方案二:指定Heroku使用Java 18版本
若需要保留Java 18,在项目根目录创建名为system.properties的文件,添加以下内容:
java.runtime.version=18
提交文件并重新推送:
git add system.properties git commit -m "指定Heroku使用Java 18运行环境" git push heroku master
处理重复构建警告
如果推送时出现重复版本的警告,确认当前工作分支:
- 若你在非master分支开发,推送时需要指定分支映射:
git push heroku <你的本地分支名>:main
内容的提问来源于stack exchange,提问作者Unicorn
相关产品推荐
相关产品推荐

