You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于JDA的Discord Bot部署至Heroku时语言检测失败求助

解决Heroku部署JDA Discord Bot时的语言检测错误

别担心,这个报错是Heroku没认出你的Java项目导致的,咱们一步步来搞定:

1. 给项目补上构建配置文件

Heroku识别Java项目全靠Maven的pom.xml或者Gradle的build.gradle,如果你的项目还没有,必须先补上。以Maven为例,在项目根目录创建pom.xml,里面要包含这些关键配置:

  • 符合JDA要求的Java版本(至少Java 11,推荐用17)
  • JDA的依赖引入
  • 打包插件,指定你的主类全路径(也就是fr.Bot.Main)

给你个参考的pom.xml片段:

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

<dependencies>
    <dependency>
        <groupId>net.dv8tion</groupId>
        <artifactId>JDA</artifactId>
        <version>5.0.0-beta.20</version> <!-- 换成最新稳定版即可 -->
        <exclusions>
            <exclusion>
                <groupId>club.minnced</groupId>
                <artifactId>opus-java</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>fr.Bot.Main</mainClass> <!-- 你的主类全路径 -->
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

2. 手动指定Java Buildpack

如果Heroku还是没自动检测到,咱们直接手动设置:

  • 要么在Heroku控制台的项目设置里找到Buildpacks,添加heroku/java
  • 要么用命令行执行:heroku buildpacks:set heroku/java

3. 创建Procfile告诉Heroku启动方式

在项目根目录新建一个名为Procfile(注意首字母大写,无后缀)的文件,内容根据你的打包方式选一个:

  • 如果打包成可执行Jar包:worker: java -jar target/你的Bot jar包名称.jar
  • 如果依赖和主类分开:worker: java -cp target/classes:target/lib/* fr.Bot.Main

这里用worker而不是web,因为Discord Bot不需要Web服务,用Web dyno会因为找不到端口报错。

4. 安全存储Bot Token

绝对不要把Token硬编码在代码里!在Heroku控制台的项目设置里,找到Config Vars,添加键值对BOT_TOKEN:你的Discord Bot Token,然后在代码里通过System.getenv("BOT_TOKEN")获取这个值。

5. 启动Worker Dyno

部署后,记得在Heroku控制台的Resources里调整dyno配置:

  • 把web dyno的数量调成0
  • 把worker dyno的数量调成1

或者用命令行快速设置:heroku ps:scale web=0 worker=1

这样操作下来,Heroku就能正确识别并运行你的JDA Bot了。

内容的提问来源于stack exchange,提问作者Owczarek Romain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:15:19