我试图建立一个不和谐机器人与Java不和谐API,但当我运行这个代码片段:
public static void main(String[] args) throws LoginException {
JDABuilder builder = JDABuilder.createDefault(token);
builder.setActivity(Activity.watching("boop"));
builder.build();
}
它抛出这个异常:
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
为什么会抛出这个,我该如何修复它?
对于看到这一点,但似乎无法阅读评论或自己解决的人来说。在JDA维基上,也有一个解释。归功于@BENRABAH Brahim Zaky
启动时的NoClassDefFoundError或ClassNotFoundException
java. lang.NoClassDefFoundError:net/dv8tion/jda/api/JDABuilder之类的错误或类似的意味着您没有在存档中包含您的依赖项或传递依赖项。
gradle(build. gradle)
使用gradle,可以通过使用影子插件并使用影子Jar构建您的jar来解决这个问题。然后,jar将出现在build/libs目录中,名称类似于example-1.0-all.jar
Maven(pom. xml)
使用maven,您需要pom中的阴影插件来将依赖项添加到您的包任务中。您可以在此示例pom.xml中看到正在应用的阴影插件
Jar(没有构建工具)
您需要使用-withDependencies. jar
而不是普通的。
首选的方法取决于每个程序员,但我建议使用gradle或maven。因为它们可以完成从编译Jar到添加依赖项的所有工作。
我也遇到了同样的问题,这个错误是由于您的编译器没有找到类路径而引起的
我的解决方案:
您必须从Modulepath中删除(JDA)并将其添加到(java构建路径)中的Classpathh。