Heroku java 应用程序不会在线超过 90 秒
Posted
技术标签:
【中文标题】Heroku java 应用程序不会在线超过 90 秒【英文标题】:Heroku java app won't stay online for more than 90 seconds 【发布时间】:2021-12-08 13:38:54 【问题描述】:我一直在尝试让我的 discord bot (jda/gradle) 在 heroku 上上线一段时间,唯一对我有用的是使用 .jar
文件让我的 bot 上线,但不幸的是它成功了90 秒后离线,heroku 日志给出:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch
这是我的 build.gradle:
plugins
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '7.0.0'
mainClassName = 'com.xlol.testbot.TestBot'
group 'com.xlol'
version '1.0'
sourceCompatibility = 16
repositories
mavenCentral()
jcenter()
maven
name 'm2-dv8tion'
url 'https://m2.dv8tion.net/releases'
task stage(dependsOn: ['build', 'clean'])
build.mustRunAfter clean
dependencies
implementation group: 'me.duncte123', name: 'botCommons', version: '1.0.45'
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
implementation 'net.dv8tion:JDA:4.3.0_324'
implementation 'io.github.cdimascio:java-dotenv:5.1.1'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
compileJava.options.encoding = 'UTF-8'
我的Procfile:
web: java $JAVA_OPTS -jar build/libs/HerokuTestBot-1.0-all.jar -Dserver.port=$PORT $JAR_OPTS
我的system.properties:
java.runtime.version=16
server.port=$PORT:8080
如果您需要其他任何东西,请提出要求,我已经尝试解决此问题大约 3 天了,任何帮助将不胜感激,在此先感谢!
【问题讨论】:
我在这里看不到任何关于您的实际代码的信息。你的机器人会监听 HTTP 请求吗? @Chris 我不知道如何检查,这可能意味着它没有,你能告诉我如何让它监听 HTTP 请求吗? 它应该是吗?我不知道它应该做什么。如果它需要响应 HTTP 请求,它必须在 Heroku 分配的端口上监听它们并作为web
进程运行。如果它不响应 HTTP 请求,它应该是一个非web
进程,例如可能是worker
。
@Chris 我已经修复了它,这实际上是解决方案,我想运行一个我需要使用web
的.jar
文件,但它与worker
一起工作得很好,谢谢
【参考方案1】:
对于想要答案的人(致 @Chris),这是因为 Heroku 无法在端口“$PORT”(Heroku 的变量)上找到 Web 应用程序。此托管需要 Web 端口或应用程序才能通过网站链接访问它。
但是,在所有情况下。人们会推荐您使用 VPS 或支持 Java 托管的主机。 (例如:托管我的世界服务器的主机,因为 Minecraft 在 Java 上运行。|| 支持多种语言的 Discord Bot 托管的主机,从 NodeJS 到 Java)
【讨论】:
以上是关于Heroku java 应用程序不会在线超过 90 秒的主要内容,如果未能解决你的问题,请参考以下文章
在heroku上部署了discord bot,bot不会上线