Estoy tratando de construir un bot de discordia con la API de Java Discord, pero cuando ejecuto este fragmento de código:
public static void main(String[] args) throws LoginException { JDABuilder builder = JDABuilder.createDefault(token); builder.setActivity(Activity.watching("boop")); builder.build(); }Lanza esta excepción:
Exception in thread "main" java.lang.NoClassDefFoundError: gnu/trove/map/TLongObjectMap at net.dv8tion.jda@4.2.0_216/net.dv8tion.jda.api.entities.Activity.watching(Activity.java:204) at rambot/rambot.discord.MainApp.main(MainApp.java:14)Caused by: java.lang.ClassNotFoundException: gnu.trove.map.TLongObjectMap at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 2 more¿Por qué se lanza esto y cómo puedo solucionarlo?
Para las personas que ven esto, pero parece que no pueden leer los comentarios o resolverlo por sí mismos. En la wiki de JDA, también hay una explicación . Créditos a @BENRABAH Brahim Zaky
NoClassDefFoundError o ClassNotFoundException al inicio
Un error como java.lang.NoClassDefFoundError: net/dv8tion/jda/api/JDABuilder o similar significa que no está incluyendo sus dependencias o dependencias transitivas en el archivo.
Gradle (construir.gradle)
Con gradle, esto se puede arreglar usando el complemento shadow y construyendo su jar con shadowJar en su lugar. El jar estará presente en el directorio build/libs con un nombre como ejemplo-1.0-todos.jar
Experto (pom.xml)
Con maven, necesita el complemento de sombra en su pom para agregar dependencias a su tarea de paquete. Puede ver el complemento de sombra que se aplica en este ejemplo pom.xml
Jar (sin herramientas de construcción)
Debe usar-withDependencies.jaren lugar del normal.
El método preferido depende del programador, pero sugiero usar gradle o maven. Ya que hacen todo, desde compilar su Jar hasta agregar las dependencias.
También tuve el mismo problema, este error se debe a que su compilador no encontró la ruta de clase
mi solución:
debe eliminar (JDA) de Modulepath y agregarlo a Classpathh dentro de ( java build path ).