Heroku构建Maven项目时出现invalid target release:17错误求助
解决Heroku上Maven项目编译错误:invalid target release: 17
问题分析
本地已配置Java 17与Maven 3.6.3,pom.xml也指定了<java.version>17</java.version>,但Heroku构建时仍抛出编译目标版本无效的错误——核心原因是Heroku默认的Java运行时版本可能不是17,本地环境与Heroku构建环境的Java版本不匹配。
解决方案
1. 添加system.properties指定Heroku Java版本
在项目根目录创建system.properties文件,写入:
java.runtime.version=17
该文件会强制Heroku使用Java 17完成应用的构建与运行。
2. 显式配置Maven编译器插件(可选)
尽管Spring Boot父项目会自动管理编译器插件版本,仍可显式指定编译参数确保版本一致,在pom.xml的<build><plugins>节点中添加:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>17</source> <target>17</target> <encoding>UTF-8</encoding> </configuration> </plugin>
3. 清理Heroku构建缓存
若旧缓存导致版本兼容问题,可通过Heroku CLI清理缓存:
heroku builds:cache:purge -a your-app-name
将your-app-name替换为你的Heroku应用名称,之后重新触发构建。
验证步骤
- 提交
system.properties及修改后的pom.xml到Git仓库 - 重新部署至Heroku:
git push heroku main - 查看构建日志确认Java版本已切换为17
内容的提问来源于stack exchange,提问作者Wiktor Bartoszyn
相关产品推荐
相关产品推荐

