为了账号安全,请及时绑定邮箱和手机立即绑定

运行Java电报机器人90秒后Heroku崩溃

运行Java电报机器人90秒后Heroku崩溃

Qyouu 2021-05-13 10:10:05
我使用此api- https://github.com/rubenlagus/TelegramBots编写了Java Telegram机器人。我在PC上对其进行了测试,并且效果很好。因此,我决定在Heroku上对其进行测试,但是在工作90秒钟后它崩溃了(前90秒钟运行良好)。Heroku日志:2018-07-09T08:01:45.000000+00:00 app[api]: Build succeeded2018-07-09T08:01:46.940201+00:00 heroku[web.1]: Starting process with command `java -Dserver.port=18914 -jar target/AllaBot-1.0.0.jar`2018-07-09T08:01:49.163121+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.2018-07-09T08:01:49.166682+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -Dfile.encoding=UTF-82018-07-09T08:03:17.028453+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch2018-07-09T08:03:17.028604+00:00 heroku[web.1]: Stopping process with SIGKILL2018-07-09T08:03:17.121323+00:00 heroku[web.1]: Process exited with status 1372018-07-09T08:03:17.140915+00:00 heroku[web.1]: State changed from starting to crashed我的Procfile:web: java -Dserver.port=$PORT -jar target/AllaBot-1.0.0.jar据我了解,我需要在项目中更改端口,不是吗?我尝试使用互联网上的一些提示,但它们对我不起作用。
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

错误R10(引导超时)-> Web进程在启动后90秒钟内未能绑定到$ PORT


该错误告诉我们,您需要侦听heroku将提供给我们的端口。所以做吧


    public class Bot extends TelegramLongPollingBot {

    private static final String TOKEN = System.getenv("TOKEN");

    private static final String BOT_USERNAME = System.getenv("BOT_USERNAME");

    private static final String PORT = System.getenv("PORT");


    public void onUpdateReceived(Update update) {


    }


    public String getBotUsername() {

        return BOT_USERNAME;

    }


    public String getBotToken() {

        return TOKEN;

    }


    public static void main(String[] args) {

        ApiContextInitializer.init();

        TelegramBotsApi api = new TelegramBotsApi();

        try {

            api.registerBot(new Bot());

        } catch (TelegramApiRequestException e) {

            e.printStackTrace();

        }


        try (ServerSocket serverSocket = new ServerSocket(Integer.valueOf(PORT))) {

            while (true) {

                Socket clientSocket = serverSocket.accept();

            }

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}


查看完整回答
反对 回复 2021-05-19
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

在浪费大量时间尝试修复此R10错误后对我有很大帮助。我可以追加将Procfile放置在根目录中,如下所示:

web: java $JAVA_OPTS -Dserver.port=$PORT -jar target/<custom-bot>.jar


查看完整回答
反对 回复 2021-05-19
  • 2 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信