【问题标题】:JavaCord on jar running I get java.lang.NoClassDefFoundError: org/javacord/api/DiscordApiBuilderJavaCord on jar running 我得到 java.lang.NoClassDefFoundError: org/javacord/api/DiscordApiBuilder
【发布时间】:2020-10-20 19:38:42
【问题描述】:
我正在尝试使用 JavaCord 在 Java 中创建一个不和谐机器人。我编写了代码,使用 Gradle 构建并输入了 cmd 命令:java -jar botgamin.jar。我得到了这个:
Exception in thread "main" java.lang.NoClassDefFoundError: org/javacord/api/DiscordApiBuilder
at me.maxisy.gamingbot.Main.main(Main.java:10)
Caused by: java.lang.ClassNotFoundException: org.javacord.api.DiscordApiBuilder
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
有人可以帮我吗?这是我的代码:https://pasteboard.co/Jfuc7yN.png
【问题讨论】:
标签:
java
gradle
intellij-idea
discord
【解决方案1】:
在尝试执行时似乎没有得到导入的类DiscordApiBuilder。尝试在执行时给出类路径。为此,请尝试以下操作。
首先,将 org.javacord.api(其中存在 DiscordApiBuilder 类的 jar)的 jar 放在您尝试执行 commenad 的同一位置。
其次,编辑命令并尝试下面的一个,
# Note : assuming DiscordApiBuilder jar name is DiscordApiBuilder.jar
# -cp : this indicate Class Path. hence it will loop for the imports in the mentioned jar as well.
java -cp DiscordApiBuilder.jar -jar botgamin.jar
希望这会有所帮助。
【解决方案2】:
从我读到的错误是由编译时到运行时的类路径不同引起的,经过大量挖掘后我发现添加
jar {
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
我的 build.gradle 解决了这个问题,我相信这会将类路径打包到 jar 文件中,所以在运行时它实际上可以找到它,如果我错了,请纠正我。
但这似乎确实为我解决了问题