【问题标题】:Hosting a runnable jar file (Discord bot) on a web server (Heroku)在 Web 服务器 (Heroku) 上托管可运行的 jar 文件 (Discord bot)
【发布时间】:2016-10-12 08:19:09
【问题描述】:

我刚刚在一个可运行的 jar 中创建了一个简单的 Discord 机器人。 (作为免责声明,当谈到网络时,我是菜鸟。)我一直在寻找一种在网上免费运行它的方法,我阅读了所有这些 VPS 网站,但没有一个提供无限制的免费计划。所以我偶然发现了一个名为 Heroku 的网站,它允许我在一个月的大部分时间里运行它。我基本上已经弄清楚了一切,但是有一个我无法修复的错误:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch

我的 Discord 机器人无法连接到 Heroku 的服务器,我认为这就是问题所在,但我不知道如何解决它。有没有人遇到过类似的问题?我要以正确的方式托管我的机器人吗?谢谢。

编辑:这是完整的日志:

2016-06-11T17:00:56.792783+00:00 app[web.1]: 17:00:56.792 [main] DEBUG d.btobastian.javacord.ImplDiscordAPI - Requested gateway wss://gateway.discord.gg (token: **************************************************NdxxxW0oQ)
2016-06-11T17:00:56.765456+00:00 app[web.1]: 17:00:56.765 [main] DEBUG d.btobastian.javacord.ImplDiscordAPI - Requesting gateway (token: **************************************************NdxxxW0oQ)
2016-06-11T17:00:57.199263+00:00 app[web.1]: 17:00:57.199 [ReadingThread] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Sending connect packet
2016-06-11T17:00:57.267527+00:00 app[web.1]: 17:00:57.267 [ReadingThread] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Received READY-packet!
2016-06-11T17:00:57.270636+00:00 app[web.1]: 17:00:57.270 [ReadingThread] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Updating status (game: none, idle: false)
2016-06-11T17:01:38.508359+00:00 app[web.1]: 17:01:38.507 [pool-2-thread-1] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Sending heartbeat (interval: 41250)
2016-06-11T17:02:19.751552+00:00 app[web.1]: 17:02:19.751 [pool-2-thread-1] DEBUG d.b.j.utils.DiscordWebsocketAdapter - Sending heartbeat (interval: 41250)
2016-06-11T17:02:22.866430+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch
2016-06-11T17:02:23.649874+00:00 heroku[web.1]: Process exited with status 137

所以我的应用程序实际上并没有与 Heroku 服务器交互,它显然“超时”了。当我在本地运行它时,一切都很好,但是当我将它上传到 Heroku 应用程序时,它“超时”。我一直在寻找绑定 $PORT 的方法,但到目前为止还没有成功。我已将它包含在我的 Procfile 中,但没有结果:

web: java $JAVA_OPTS -Dserver.port=$PORT -jar ideaprojects.jar --host=0.0.0.0 --port=$PORT

我以前从未与端口进行过交互,有人可以帮助我吗?再次感谢。

Edit2:我什至尝试通过将我的 Java 代码添加到他们的末尾来通过他们的“java-getting-started”运行我的机器人。 Heroku 没有崩溃,但我的机器人似乎也没有运行。

【问题讨论】:

  • 您是否有任何服务器日志可以帮助解决此问题?
  • dropbox 或 google drive 不是一个选项吗?您也可以使用种子来托管文件
  • 显示您的Procfile 的内容。您可能没有绑定到 $PORT

标签: java heroku


【解决方案1】:

您收到此错误是因为您的 Procfile 配置为 web。您需要将Procfile 配置为worker 进程。

你可以试试这个Procfile配置:worker: java -jar target/*.jar

你也可以看看这个页面:https://devcenter.heroku.com/articles/run-non-web-java-processes-on-heroku

【讨论】:

    【解决方案2】:

    Heroku 用于托管 Web 应用程序。它不适用于托管不属于您在 Heroku 上运行的 Web 应用程序的进程,并且尝试运行这样的进程将无法正常工作。

    您需要一个 VPS 来托管您的机器人。是的,您必须为此付费。

    【讨论】:

      猜你喜欢
      • 2020-05-13
      • 2021-11-26
      • 2020-12-23
      • 2020-09-01
      • 2021-07-17
      • 2020-11-26
      • 2018-08-16
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多