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

Spring Boot部署Heroku报invalid target release:18编译错误

报错根因

invalid target release: 18属于Maven编译的经典版本不匹配错误:你项目配置的Java编译目标版本为JDK 18,但Heroku构建环境默认没有预装JDK 18,用低版本JDK编译高版本目标代码时直接抛出异常。
你贴出的pom片段没有显式配置Java版本,会直接继承Spring Boot父POM的默认JDK版本配置,和你本地使用的JDK 18对齐,但Heroku对非LTS版本的JDK不会做自动识别适配,最终导致构建失败。

修复步骤

优先选择长期支持版本适配,稳定性更有保障:

    1. 在pom.xml的<properties>节点中显式声明使用JDK 17(Heroku原生支持、Spring Boot 3.x官方推荐的LTS版本),覆盖默认的版本配置:
<properties>
    <java.version>17</java.version>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <!-- 保留原有其他配置,比如vaadin版本定义 -->
    <vaadin.version>你当前使用的Vaadin版本号</vaadin.version>
</properties>
    1. 在项目根目录新建system.properties文件,明确指定Heroku构建时使用的JDK版本,避免平台自动识别出错:
java.runtime.version=17
    1. 本地开发环境切换为JDK 17,重新执行mvn clean package确认编译、运行无异常后,将修改提交到Git仓库并推送到Heroku即可正常完成构建部署。

如果你确实因为代码依赖JDK 18特性无法降级,可以直接在根目录system.properties中写入java.runtime.version=18强制Heroku拉取JDK18镜像构建,但非常不推荐在生产环境使用非LTS版本JDK,这类版本支持周期短,后续可能出现构建缓存失效、无安全补丁等问题。

补充说明:你粘贴的pom片段开头缺失<dependencies>起始标签,属于粘贴疏漏,和本次编译报错无关。

内容的提问来源于stack exchange,提问作者Ivonne R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:42:34