【问题标题】: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

希望这会有所帮助。

【讨论】:

  • 谢谢,我自己修好了:D
【解决方案2】:

从我读到的错误是由编译时到运行时的类路径不同引起的,经过大量挖掘后我发现添加

jar { 
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

我的 build.gradle 解决了这个问题,我相信这会将类路径打包到 jar 文件中,所以在运行时它实际上可以找到它,如果我错了,请纠正我。 但这似乎确实为我解决了问题

【讨论】:

    猜你喜欢
    • 2023-01-23
    • 2021-04-01
    • 2021-10-29
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多