在Web服务器(Heroku)上托管可运行的jar文件(Discord bot)

时间:2016-06-11 12:48:09

标签: java heroku

我刚刚在一个可运行的jar中创建了一个简单的Discord bot。 (作为免责声明,当谈到网络时,我是一个菜鸟。)我一直在寻找一种在线自由运行的方式,我读到了所有这些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不会崩溃,但似乎我的机器人也没有运行。

2 个答案:

答案 0 :(得分:1)

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

您可以尝试此Procfile配置:worker: java -jar target/*.jar

您也可以查看此页面:https://devcenter.heroku.com/articles/run-non-web-java-processes-on-heroku

答案 1 :(得分:0)

Heroku用于托管Web应用程序。它不适用于托管您在Heroku上运行的Web应用程序的一部分,并且尝试运行此类过程将无法正常运行。

您需要一台VPS来托管您的机器人。是的,你必须付钱。