NoClassDefFoundError:带有logback的org / slf4j / LoggerFactory

时间:2015-09-04 15:33:06

标签: java maven logging logback bukkit

请帮忙,

在过去的几天里,我一直试图让Logback 1.1.3使用我的Bukkit插件。作为参考,我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>

以下罐子列在“Maven Dependencies”下:

  • 的logback核-1.1.3.jar
  • 的logback经典-1.1.3,罐
  • slf4j-api-1.7.7.jar(无处不在)

可以找到服务器控制台生成的堆栈跟踪here(MoneyDrops.java的第29行是: private static final Logger LOGGER = LoggerFactory.getLogger("MoneyDropsLogger");)。

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在maven将解决的logback -j的pom中依赖于slf4j。这就是&#34;无处不在的原因&#34;。

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

  

代表Java插件加载器,允许以.jar

形式的插件

我根本不熟悉这个库,但我会把它解释为&#34;这个插件只会加载指定的jar&#34;这将是MoneyDrops jar。

https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java处的第127行实际上提供了bukkit类加载器和一个文件作为类路径。我认为文件将是你的罐子。

因此,为了完成这项工作,您需要以某种方式使您的依赖项可用于bukkit的类加载器。也许是我的世界服务器?

另一种选择是解压缩所有依赖项。无论如何,罐子都是压缩文件,并用你的代码重新打包。这样你就可以为pluginloader提供一个jar。有一个maven插件为你做这个,但我忘记了名字。

答案 1 :(得分:0)

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