2015-09-04 87 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

相關問題