Java NoClassDefFoundError:org/slf4j/LoggerFactory和logback
请帮忙 在过去的几天里,我一直在尝试使用我的Bukkit插件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> &
logback1.1.3
。作为参考,mypom.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”。