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

Heroku部署Java Discord机器人Maven报invalid target release:17错误

问题描述

基于Java开发Discord机器人时,本地使用OpenJDK 17.0.2环境开发,pom.xml已配置编译目标为Java 17,本地运行正常。通过GitHub将项目部署到Heroku实现7*24小时运行时,Maven构建失败,核心报错如下:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.970 s
[INFO] Finished at: 2022-07-15T15:44:01Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project gloombot: Fatal error compiling: invalid target release: 17 -> [Help 1]
[ERROR] 
!     ERROR: Failed to build app with Maven
!     Push rejected, failed to compile Java app.
!     Push failed

附本地相关配置参考:

  • pom.xml中编译参数配置:
<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>
  • 本地JDK版本查询结果:
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
故障原因

Heroku的默认Java构建环境使用的JDK版本低于17,不支持Java 17作为编译目标版本,因此触发invalid target release: 17报错,和本地环境、项目代码、pom.xml本地配置无关。

解决步骤
  • 在项目根目录新建名为system.properties的配置文件
  • 在文件内写入配置,指定Heroku构建时使用的JDK版本:
java.runtime.version=17
  • 将该文件提交到Git仓库,重新推送触发Heroku构建即可。

可选配置:如果需要指定精确的JDK小版本,可以直接写全版本号,例如java.runtime.version=17.0.2,Heroku会拉取对应版本的OpenJDK完成构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:09:25