gpt4 book ai didi

java - 类 ch.qos.logback.classic.LoggerContext 没有实现请求的接口(interface) org.slf4j.ILoggerFactory

转载 作者:行者123 更新时间:2023-12-05 07:43:40 24 4
gpt4 key购买 nike

在安装了我自己的插件的情况下启动 Maven 项目向导时,会导致控制台出现此错误并且无法启动向导。

Caused by: java.lang.IncompatibleClassChangeError: Class ch.qos.logback.classic.LoggerContext does not implement the requested interface org.slf4j.ILoggerFactory
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
at org.eclipse.m2e.core.internal.MavenPluginActivator.<init>(MavenPluginActivator.java:87)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:758)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:711)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:932)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:309)
at org.eclipse.osgi.container.Module.doStart(Module.java:581)

我的研究结果与不同版本的 slf4j jar 的多重绑定(bind)有关?我的插件是一个 Maven 项目,pom.xml 包含以下项目:

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.5</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
</dependency>

知道错误发生的原因或需要更多信息吗?

最佳答案

我知道这是一个老问题,但也许这会帮助其他人尝试解决此问题。

IncompatibleClassChangeError 错误是 SLF4J 寻找实现以满足其 ILoggerFactory API 接口(interface)的结果。

根据提供的 pom.xml 文件,我猜测“log4j-slf4j-impl”中的 StaticLoggerBinder 正在尝试使用“logback-classic”作为实现。

您可以尝试使用“slf4j-simple”作为“slf4j-api”的实现来解决这个问题。但是,slf4j-simple 仅记录标准错误/输出。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.10</version>
</dependency>

关于java - 类 ch.qos.logback.classic.LoggerContext 没有实现请求的接口(interface) org.slf4j.ILoggerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43542610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com