使用JDA开发Discord机器人遇编译错误:找不到createDefault符号
JDA开发Discord机器人编译错误:cannot find symbol class createDefault
我是Java初学者,使用IntelliJ IDEA(Maven)基于JDA开发Discord机器人,编译时出现以下错误:
17:47 java: cannot find symbol symbol: class createDefault location: class net.dv8tion.jda.api.JDABuilder
已经尝试过以下解决方案但均无效:
- 生成jar并处理相关插件
- 重装IDE
- 检查包和类的导入情况
以下是我的主代码和pom.xml配置,恳请告知解决办法:
主代码
package me.n1ghtsoul; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; import net.dv8tion.jda.api.entities.Activity; public class Bot { private static JDA jda; private static final String Token_Api = "MTEwNzcxMzEzNDUxMDIzMTYxNQ.G7NnYJ.Zcy_Ij80ey0oLivIKZ4pam6pP6A8MwG3pp4Ndk"; public static void main(String[] args) { botInit(); } private static void botInit(){ JDABuilder jdaBuilder = new JDABuilder.createDefault(Token_Api); jda = jdaBuilder.setActivity(Activity.listening("крутая музыка")) .build(); } }
pom.xml配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>me.n1ghtsoul</groupId> <artifactId>NullifierReworked</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>net.dv8tion</groupId> <artifactId>JDA</artifactId> <version>5.0.0-beta.9</version> <exclusions> <exclusion> <groupId>club.minnced</groupId> <artifactId>opus-java</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
解决办法
错误核心原因是JDA 5.x版本中,createDefault是静态工厂方法,不需要通过new JDABuilder()实例化调用,直接用类名调用即可。同时JDA 5.x要求必须处理构建时的异常,需补充异常处理逻辑:
步骤1:修正createDefault调用方式
修改botInit方法中的实例化代码,去掉new关键字:
JDABuilder jdaBuilder = JDABuilder.createDefault(Token_Api);
步骤2:添加异常处理
可选两种方式处理构建异常:
- 方式一:使用try-catch捕获异常
private static void botInit(){ try { JDABuilder jdaBuilder = JDABuilder.createDefault(Token_Api); jda = jdaBuilder.setActivity(Activity.listening("крутая музыка")) .build(); } catch (Exception e) { e.printStackTrace(); } }
- 方式二:修改方法签名抛出异常
private static void botInit() throws Exception { JDABuilder jdaBuilder = JDABuilder.createDefault(Token_Api); jda = jdaBuilder.setActivity(Activity.listening("крутая музыка")) .build(); }
步骤3:刷新Maven依赖
在IntelliJ中点击Maven面板的刷新按钮,或执行Maven命令:
mvn clean compile
内容的提问来源于stack exchange,提问作者N1ghtSoul89
相关产品推荐
相关产品推荐

