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

使用Heroku Maven Plugin部署Spring Boot应用报错求助

解决Heroku Maven插件部署Spring Boot应用报错“Error: -jar requires jar file specification”

这个问题我之前也碰到过,核心原因是你在processTypes里配置的启动命令用了本地构建的路径,但Heroku运行环境里的jar文件位置和本地不一样!

错误原因分析

当使用heroku-maven-plugin部署时,插件会自动把你在<includes>节点中指定的jar文件复制到Heroku应用的根目录,而不是保留本地的target/目录结构。你当前的启动命令里写的是:

<web>java $JAVA_OPTS -jar ${project.build.directory}/${project.build.finalName}.jar</web>

在Heroku的dyno运行环境中,根本不存在target/xxx.jar这个路径,系统找不到指定的jar文件,所以会抛出-jar requires jar file specification的错误。

解决方案

只需要修改processTypes中的启动命令,去掉本地构建目录的前缀,直接使用jar文件名即可:

<plugin>
  <groupId>com.heroku.sdk</groupId>
  <artifactId>heroku-maven-plugin</artifactId>
  <version>3.0.4</version>
  <configuration>
    <appName>${heroku.appName}</appName>
    <includeTarget>false</includeTarget>
    <includes>
      <include>${project.build.directory}/${project.build.finalName}.jar</include>
    </includes>
    <jdkVersion>${java.version}</jdkVersion>
    <processTypes>
      <!-- 修改这里:去掉${project.build.directory}/前缀 -->
      <web>java $JAVA_OPTS -jar ${project.build.finalName}.jar</web>
    </processTypes>
  </configuration>
</plugin>

验证修改

重新执行部署命令:

mvn clean heroku:deploy

这次插件会把jar文件上传到Heroku应用根目录,启动命令也能正确找到jar文件,应用应该就能正常部署启动了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:02:47