2015-09-04 82 views
-1

请帮帮忙,NoClassDefFoundError的:组织/ SLF4J /的LoggerFactory的logback与

在过去的几天我一直在试图让Logback 1.1.3我Bukkit插件工作。仅供参考我pom.xml包括这些行:

  • 的logback核-1.1.3.jar
  • 的logback-经典1.1:

    <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依赖” 上市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文件。

任何帮助将不胜感激。

+0

我想你需要添加commons-logging:http://stackoverflow.com/questions/8670069/how-does-simply-adding-slf4j-to-the-pom-xml-wrap-log4j –

+0

继承人如何人做了它:https://wiki.base22.com/display/btg/How+to+setup+SLF4J+and+LOGBack+in+a+web+app+-+fast –

回答

0

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

0

Maven将解决的logback-classic中存在对slf4j的依赖。这就是“无处出现”的原因。

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

Represents a Java plugin loader, allowing plugins in the form of .jar

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

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

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

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

+0

_另一种选择是解压所有的依赖关系。无论如何,这些罐子都是压缩文件,并用你的代码重新包装它们。这样你就可以为pluginloader._提供一个jar。你能详细说明一下吗? – Famz

+0

我猜user392486讨论了Maven的程序集插件,特别是插件创建包含代码+依赖关系的“胖”jar的能力。在“jar-with-dependencies”下查看[这里](https://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html)。 – Koby

相关问题