首页 > 解决方案 > 无法在 Heroku 上为 discord bot 设置 java 端口

问题描述

我使用 javacord 库编写了一个 discord 机器人,它运行良好,因为如果我在 IntelliJ idea 中运行程序,该机器人在 Discord 上在线(我可以使用它)。

当我将机器人上传到 heroku 时,我可以使用它几分钟,然后出现以下错误:

2019-02-04T22:21:01.000000+00:00 app[api]: Build started by user aa@aa.com

2019-02-04T22:21:15.414268+00:00 heroku[web.1]: State changed from crashed to starting

2019-02-04T22:21:19.806474+00:00 heroku[web.1]: Starting process with command `java $JAVA_OPTS -jar warbot.jar -server.port=22270`

2019-02-04T22:21:14.200586+00:00 app[api]: Deploy dc88e3ab by user aa@aa.com

2019-02-04T22:21:22.813747+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.

2019-02-04T22:21:22.825641+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8 

2019-02-04T22:21:23.528694+00:00 app[web.1]: 2019-02-04 22:21:23.469+0000 INFO org.javacord.core.util.logging.ExceptionLoggerDelegateImpl No Log4j2 compatible logger was found. Using default Javacord implementation!

2019-02-04T22:21:27.268649+00:00 app[web.1]: The bot has started

2019-02-04T22:21:14.200586+00:00 app[api]: Release v25 created by user aa@aa.com

2019-02-04T22:21:24.000000+00:00 app[api]: Build succeeded

2019-02-04T22:22:50.697048+00:00 heroku[web.1]: State changed from starting to crashed

2019-02-04T22:22:50.530237+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch

2019-02-04T22:22:50.530363+00:00 heroku[web.1]: Stopping process with SIGKILL

2019-02-04T22:22:50.678651+00:00 heroku[web.1]: Process exited with status 137

基本上,经过几次机器人崩溃。我怎样才能解决这个问题?


网上很多答案都提到了 Spring 框架,但我没有使用它!并且涉及的解决方案-Dspring.server.port=$PORT不起作用。我的 Procfile 中有这个:

网页:java $JAVA_OPTS -jar warbot.jar -server.port=$PORT

jar 与Procfilewarbot.jar位于同一位置(位于根目录中)。我怎样才能解决这个问题?看来上面那行还不足以设置端口。

我基本上必须设置端口,这样 heroku 就不会抱怨,我的机器人可以保持在线!

标签: javaheroku

解决方案


推荐阅读