Heroku部署JDA/Gradle开发的Discord机器人部署成功但无法上线求助
问题修复方案
1. 修正build.gradle的stage任务配置
你当前的stage任务依赖的是默认build命令,生成的jar包不会自带依赖库,Heroku运行时自然找不到JDA等相关类。你需要把stage任务绑定shadowJar构建逻辑,生成包含所有依赖的单可执行jar包:
// 替换原有stage任务代码 task stage(dependsOn: ['shadowJar', 'clean']) shadowJar.mustRunAfter clean // 可额外添加以下配置固定shadowJar输出文件名,方便后续调用 shadowJar { archiveFileName.set("bot.jar") }
2. 指定Heroku Java运行版本
你配置的JDK编译版本为16,Heroku默认JDK版本低于16会导致兼容错误,需要在项目根目录新建system.properties文件,添加如下内容:
java.runtime.version=16
3. 修正Procfile启动配置
项目根目录的Procfile需要指定运行打包好的全量jar包,且Discord机器人不需要HTTP服务,使用worker类型dyno避免Heroku因未绑定端口关停服务,Procfile内容如下:
worker: java -jar build/libs/bot.jar
4. 移除无效依赖仓库
jcenter已经正式停止服务,会导致部分依赖拉取失败,直接删除repositories代码块中的jcenter()行即可。
内容的提问来源于stack exchange,提问作者XLoL2007
相关产品推荐
相关产品推荐

