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

sbt多项目下Scala Akka Http应用部署Heroku后无法启动问题求助

问题根因

你遇到的报错确实和Procfile配置直接相关,核心原因是sbt多项目结构下,Heroku默认的启动路径指向了根项目的构建产物,但你可运行的Akka Http服务在api子项目中,对应的启动脚本没有生成在根项目的target目录下。

修复步骤

1. 确认sbt打包配置

首先检查你的build.sbt是否满足以下要求:

  • api子项目中已经启用sbt-native-packager插件(Heroku依赖该插件生成启动脚本)
  • api子项目中已经明确配置了mainClass,指向你的Akka Http服务入口类
  • 本地执行sbt api/stage命令后,能在./api/target/universal/stage/bin/目录下找到可执行的启动脚本(默认文件名和子项目的name配置一致,通常为api)

2. 修改Procfile配置

将你项目根目录下Procfile的内容替换为以下格式,替换启动脚本路径为api子项目的对应路径:

web: ./api/target/universal/stage/bin/api -Dhttp.port=$PORT

注意:如果你的api子项目配置了自定义的name属性,需要将上述命令中的api替换为你设置的子项目名称。

3. 可选:优化Heroku构建逻辑

如果不想每次全量构建所有子项目,可以在项目根目录下创建system.properties文件,添加以下配置指定Heroku执行的sbt构建命令:

sbt.stage.task=api/stage

该配置会让Heroku仅构建api子项目,减少构建时间。

验证方法

修改配置后重新执行git push heroku master部署即可,部署完成后可以通过heroku logs --tail查看启动日志确认服务正常运行。

内容的提问来源于stack exchange,提问作者M.G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:54:01