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

首次部署Ktor应用至Heroku遇Unable to access jarfile错误求助

解决Heroku部署Ktor应用时“Unable to access jarfile”错误

问题分析

构建成功且Heroku后台显示jar已部署,但启动时提示无法访问jar文件,核心原因在于stage任务未正确关联ShadowJar构建、jar文件名不匹配或ShadowJar的主类配置缺失。

解决方案步骤

1. 修正Stage任务依赖

在build.gradle.kts中,将stage任务的依赖从installDist改为shadowJar,确保Heroku构建时生成包含所有依赖的fat jar:

tasks {
    create("stage").dependsOn("shadowJar")
}

2. 配置ShadowJar任务

取消注释并完善ShadowJar的配置,确保主类正确且生成的jar文件名与Procfile完全匹配:

tasks.shadowJar {
    manifest {
        attributes["Main-Class"] = application.mainClass.get()
    }
    // 指定jar文件名,匹配Procfile中的school-backend-all.jar
    archiveBaseName.set("school-backend")
    archiveClassifier.set("all")
    archiveVersion.set("") // 移除版本号,避免文件名带版本后缀
}

3. 验证Procfile路径

保持Procfile内容不变,确认路径指向正确:

web: java -jar ./build/libs/school-backend-all.jar

4. 重新部署

提交修改后重新推送到Heroku:

git add build.gradle.kts Procfile
git commit -m "Fix jar access issue for Heroku deployment"
git push heroku main

额外排查步骤

如果问题仍存在,可通过Heroku命令行查看dyno内的文件结构,确认jar实际路径和名称:

heroku run bash
# 进入后执行以下命令查看jar文件
ls -la build/libs/

根据实际输出调整Procfile中的jar文件名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:58:35