NoClassDefFoundError: org/slf4j/LoggerFactory with logback
NoClassDefFoundError: org/slf4j/LoggerFactory with logback
请帮忙,
在过去的几天里,我一直在努力让 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>
并且以下 jar 列在 "Maven Dependencies" 下:
- logback-core-1.1.3.jar
- logback-classic-1.1.3,jar
- slf4j-api-1.7.7.jar(突然出现)
可以找到服务器控制台生成的堆栈跟踪 here(MoneyDrops.java 的第 29 行是:
private static final Logger LOGGER = LoggerFactory.getLogger("MoneyDropsLogger");
).
我也通过 Whosebug 进行了搜索,但所有答案都表明我需要提供一个使用 SLF4J api(例如 log4j)的实现,但是,据我了解,logback 本身实现了api 而且我不需要另一个 jar 文件。
如有任何帮助,我们将不胜感激。
logback-classic 的 pom 中存在对 Maven 将解析的 slf4j 的依赖项。这就是 "appeared out of nowhere".
的原因
如果我阅读 JavaPluginLoader 的文档,它会说:
Represents a Java plugin loader, allowing plugins in the form of .jar
我一点也不熟悉这个库,但我会将其解释为 "This plugin will only load the specified jar",即 MoneyDrops 罐子。
https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java 的第 127 行实际上提供了 bukkit 类加载器和一个文件作为类路径。我认为该文件将是您的 jar。
因此,为了完成这项工作,您需要以某种方式使您的依赖项可用于 bukkit 的类加载器。也许是我的世界服务器?
另一种选择是解压所有依赖项。无论如何,罐子都是压缩文件,并用您的代码重新打包它们。这样您就可以为插件加载器提供一个 jar。有一个 maven 插件可以帮你做这个,但我忘记了名字。
谢谢大家的帮助!我已经得出结论,我实际上并不需要登录我的插件(它并不那么重)并且选择完全删除它并依赖于 Bukkit logger
。再次感谢大家的帮助。
请帮忙,
在过去的几天里,我一直在努力让 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>
并且以下 jar 列在 "Maven Dependencies" 下:
- logback-core-1.1.3.jar
- logback-classic-1.1.3,jar
- slf4j-api-1.7.7.jar(突然出现)
可以找到服务器控制台生成的堆栈跟踪 here(MoneyDrops.java 的第 29 行是:
private static final Logger LOGGER = LoggerFactory.getLogger("MoneyDropsLogger");
).
我也通过 Whosebug 进行了搜索,但所有答案都表明我需要提供一个使用 SLF4J api(例如 log4j)的实现,但是,据我了解,logback 本身实现了api 而且我不需要另一个 jar 文件。
如有任何帮助,我们将不胜感激。
logback-classic 的 pom 中存在对 Maven 将解析的 slf4j 的依赖项。这就是 "appeared out of nowhere".
的原因如果我阅读 JavaPluginLoader 的文档,它会说:
Represents a Java plugin loader, allowing plugins in the form of .jar
我一点也不熟悉这个库,但我会将其解释为 "This plugin will only load the specified jar",即 MoneyDrops 罐子。
https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java 的第 127 行实际上提供了 bukkit 类加载器和一个文件作为类路径。我认为该文件将是您的 jar。
因此,为了完成这项工作,您需要以某种方式使您的依赖项可用于 bukkit 的类加载器。也许是我的世界服务器?
另一种选择是解压所有依赖项。无论如何,罐子都是压缩文件,并用您的代码重新打包它们。这样您就可以为插件加载器提供一个 jar。有一个 maven 插件可以帮你做这个,但我忘记了名字。
谢谢大家的帮助!我已经得出结论,我实际上并不需要登录我的插件(它并不那么重)并且选择完全删除它并依赖于 Bukkit logger
。再次感谢大家的帮助。