如何将Heroku构建环境的OpenJDK从8切换为11?
解决Heroku构建时始终使用OpenJDK 8的问题
针对你遇到的Gradle 7.5.1需要Java 11+但Heroku坚持用OpenJDK 8的情况,试试以下几个针对性方案:
确认system.properties已正确提交到Git
你添加的system.properties文件必须被提交并推送到main分支,Heroku只会读取Git仓库中的配置文件。执行以下命令确保文件已上传:git add system.properties git commit -m "Set Java 11 runtime version" git push heroku main另外,文件内容不要加注释,保持纯配置:
java.runtime.version=11在build.gradle中明确指定Java版本
在项目的build.gradle(或build.gradle.kts)中添加Java版本声明,让Gradle和Heroku构建插件明确知晓所需版本:
Groovy写法:java { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 }Kotlin写法:
java { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 }添加后提交并推送代码。
重置Heroku的Java Buildpack
确保使用Heroku官方的Java Buildpack,避免自定义或旧版Buildpack导致的配置失效:- 查看当前使用的Buildpack:
heroku buildpacks - 如果不是官方的
heroku/java,执行以下命令设置:heroku buildpacks:set heroku/java
- 查看当前使用的Buildpack:
清除Heroku构建缓存
旧的构建缓存可能残留Java 8的配置,清理后重新构建:heroku builds:cache:purge清理完成后重新推送代码触发构建。
检查Procfile配置(如果存在)
如果项目根目录有Procfile,确保启动命令没有硬编码指定Java 8的路径,保持命令简洁,比如:web: java -jar build/libs/your-app.jar让Heroku自动使用配置好的Java版本执行命令。
内容的提问来源于stack exchange,提问作者hsul0192
相关产品推荐
相关产品推荐

