首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoClassDefFoundError on Spigot插件尝试包含Apache Commons文本

NoClassDefFoundError on Spigot插件尝试包含Apache Commons文本
EN

Stack Overflow用户
提问于 2020-02-23 04:37:45
回答 1查看 1.4K关注 0票数 0

我正在编写一个Spigot插件,其中我需要使用Levenshtein距离,所以我使用的是Apache Commons Text 1.8

当我导出插件并尝试运行它时,我得到了一个实例化LevenshteinDistance对象的NoClassDefFoundError。

我正在使用Gradle来设置依赖项。

build.gradle:

代码语言:javascript
复制
repositories {
    // Use jcenter for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
    mavenCentral()

    maven {
        url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/"
    }

     maven {
        url "https://repo.dmulloy2.net/nexus/repository/public/"
     }
}

dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api 'org.apache.commons:commons-math3:3.6.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation 'com.google.guava:guava:27.0.1-jre'

    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'

    compileOnly 'org.bukkit:bukkit:1.15.2-R0.1-SNAPSHOT';
    compileOnly 'com.comphenix.protocol:ProtocolLib:4.5.0';
    compile 'org.apache.commons:commons-text:1.8';
}

错误

代码语言:javascript
复制
[15:06:10] [Server thread/ERROR]: Error occurred while enabling CubeChat v0.1 (Is it up to date?)
java.lang.NoClassDefFoundError: org/apache/commons/text/similarity/LevenshteinDistance
        at com.cubepalace.cubechat.listeners.FilterListener.<init>(FilterListener.java:30) ~[?:?]
        at com.cubepalace.cubechat.CubeChat.register(CubeChat.java:71) ~[?:?]
        at com.cubepalace.cubechat.CubeChat.onEnable(CubeChat.java:44) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:351) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:432) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:366) [PlugMan.jar:?]
        at com.rylinaux.plugman.command.LoadCommand.execute(LoadCommand.java:114) [PlugMan.jar:?]
        at com.rylinaux.plugman.PlugManCommandHandler.onCommand(PlugManCommandHandler.java:95) [PlugMan.jar:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at org.bukkit.craftbukkit.v1_15_R1.CraftServer.dispatchCommand(CraftServer.java:713) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at org.bukkit.craftbukkit.v1_15_R1.CraftServer.dispatchServerCommand(CraftServer.java:698) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at net.minecraft.server.v1_15_R1.DedicatedServer.handleCommandQueue(DedicatedServer.java:443) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:407) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:984) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:824) [spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]
Caused by: java.lang.ClassNotFoundException: org.apache.commons.text.similarity.LevenshteinDistance
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[?:1.8.0_212]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:167) ~[spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:96) ~[spigot-1.15.2.jar:git-Spigot-8faa8b4-fba9f48]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_212]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_212]
        ... 18 more

如何将所需的库打包到jar中,以便可以运行此程序?使用Eclipse IDE。

EN

回答 1

Stack Overflow用户

发布于 2020-02-28 03:29:02

您已经正确地计算出依赖项在构建时存在,但在运行时不存在。

你需要做的是一个叫做“着色”的过程。有一个Gradle插件可以做到这一点。

这里有一个链接:https://imperceptiblethoughts.com/shadow/getting-started/#default-java-groovy-tasks

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60356566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档