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

标签 java heroku

我刚刚在可运行的 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 应用程序时,它“超时”。我一直在寻找绑定(bind) $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 没有崩溃,但我的机器人似乎也没有运行。

最佳答案

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

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

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

关于java - 在 Web 服务器 (Heroku) 上托管可运行的 jar 文件 (Discord bot),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37763910/

相关文章:

java - 如何使用 java 获取 linux 上所有可用串口的列表?

java - 如何实现 GWT、Java、按钮和点击处理程序

java - 显示 java-libpst 的 PSTMessage 的简单方法

java - 什么是 ImageObserver?

python - 无法与 psycopg2 连接,但可以通过命令行连接

node.js - 对 Wintersmith 中部署的开箱即用支持

java - Lombok EqualsAndHashCode 处理可选数组

heroku - 在 Heroku 上安装 FFMPEG

ruby-on-rails - 将 Heroku 环境变量传输到 Docker 实例

postgresql - 亚马逊免费套餐与 Heroku 付费套餐