Java NoClassDefFoundError:org/slf4j/LoggerFactory和logback

Java NoClassDefFoundError:org/slf4j/LoggerFactory和logback,java,maven,logging,logback,bukkit,Java,Maven,Logging,Logback,Bukkit,请帮忙 在过去的几天里,我一直在尝试使用我的Bukkit插件logback1.1.3。作为参考,mypom.xml包括以下几行: <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.3</version> </dependency> &

请帮忙

在过去的几天里,我一直在尝试使用我的Bukkit插件
logback1.1.3
。作为参考,my
pom.xml
包括以下几行:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.3</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.3</version>
</dependency>

回写
(MoneyDrops.java的第29行是:
private static final Logger Logger=LoggerFactory.getLogger(“MoneyDropsLogger”);

我也搜索了stackoverflow,但是所有的答案都表明我需要提供一个使用SLF4J api(例如log4j)的实现,然而,据我所知,logback本机实现了api,我不需要另一个jar文件


非常感谢您的帮助。

logback classic的pom与slf4j之间存在依赖关系,Maven将解决该问题。这就是“不知从哪里冒出来”的原因

如果我阅读JavaPluginLoader的文档,它会说:

表示一个Java插件加载器,允许以.jar格式的插件

我对这个库一点也不熟悉,但我会将它解释为“这个插件将只加载指定的jar”,即MoneyDrops jar

第127行实际上提供了bukkit类加载器和一个文件作为类路径。我想这个文件就是你的jar

因此,为了实现这一点,您需要以某种方式使依赖项可供bukkit的类加载器使用。也许是minecraft服务器


另一个选项是解压缩所有依赖项。JAR无论如何都是压缩文件,并用代码重新打包。通过这种方式,您可以向pluginloader提供一个jar。有一个maven插件为您执行此操作,但我忘记了它的名称。

谢谢大家的帮助!我已经得出结论,我实际上不需要登录我的插件(它没有那么重),并且选择完全删除它,转而依赖
Bukkit logger
。再次感谢大家的帮助。

我认为您需要添加commons日志:这是这个家伙的做法:另一个选择是解包所有依赖项。JAR无论如何都是压缩文件,并用代码重新打包。通过这种方式,您可以向pluginloader提供一个jar。。你能详细说明一下吗?我猜user392486谈到了Maven的汇编插件,特别是该插件创建包含代码+依赖项的“胖”jar的能力。请看一下“带依赖项的jar”。