在 heroku 上部署了 discord bot,bot 不会上线

Deployed discord bot on heroku, bot won't come online

看过以前的帖子,但不是很懂(可能是我傻)。其中一位建议这样设置 procfile

worker: java $JAVA_OPTS -jar <JAR_FILE_PATH>

但我不知道该文件路径是什么。我按照 Heroku 文档得到了这个,我想知道如何在线获取 discord 机器人。

目前,它在 intelliJ 中作为 maven 运行 使用命令提示符行“heroku:deploy-war”进行部署

这是我的程序文件:worker: java $JAVA_OPTS -jar target\Disbot-1.0-SNAPSHOT.jar

总而言之,这只是一种非常复杂的方式来询问“在 heroku 中执行此操作时的 jar 文件路径是什么?”

如果有更好的方法或更有效的方法,我很乐意尝试一下。如果需要更多信息,我会尽可能提供。

问题已解决 - 更好地找到了解决方法。将其打包为 .jar 文件并意识到 Procfile 实际上只是一个命令提示符。使用具有文本工作器的 Procfile 将 jar 上传到 GitHub:java -jar Jar.jar。虽然我没有得到答案,但感谢所有花时间看这个问题的人

由于 Heroku 在 /tmp 中随机生成 target 目录,当前答案在本答案发布时 (2021-09-18) 不起作用,所以我按照以下步骤操作来自 Heroku documentation,使用此项目结构:

.
├─ pom.xml
├─ Procfile
└─ src
   └─ main
      └─ java
         └─ com
            └─ example
               └─ Main.java
  • 将此构建依赖项添加到 pom.xml:
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <version>1.1.1</enter code hereversion>
            <configuration>
                <assembleDirectory>target</assembleDirectory>
                <programs>
                    <program>
                        <mainClass>com.example.Main</mainClass>
                        <name>main</name>
                    </program>
            </programs>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase><goals><goal>assemble</goal></goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  • 使用此指令添加了 Procfileworker: sh target/bin/main
  • 提交更改并推送到 Heroku 的远程。
  • 调整 dyno 使其不会休眠(考虑到您的项目有最大小时数):heroku ps:scale worker=1