Java &引用;此版本的SLF4J需要log4j版本1.2.12“;log4j 1.2.17警告

Java &引用;此版本的SLF4J需要log4j版本1.2.12“;log4j 1.2.17警告,java,eclipse,maven,log4j,slf4j,Java,Eclipse,Maven,Log4j,Slf4j,我有一个Java Maven项目,它的依赖项包括slf4j及其log4j适配器。 我根据其最新版本管理log4j,slf4j-log4j12和slf4j-api,尤其是log4j版本的1.2.17远远超过了1.2.12,但我仍然得到了错误 SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version

我有一个Java Maven项目,它的依赖项包括
slf4j
及其
log4j适配器
。 我根据其最新版本管理
log4j
slf4j-log4j12
slf4j-api
,尤其是
log4j
版本的1.2.17远远超过了1.2.12,但我仍然得到了错误

SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. 
    See also http://www.slf4j.org/codes.html#log4j_version 
我完全不清楚

我的Maven依赖项管理如下所示:


org.apache.jena
ApacheJenaLibs
聚甲醛
2.10.0
log4j
log4j
1.2.17
org.slf4j
slf4j-log4j12
1.7.5
org.slf4j
slf4j api
1.7.5
我怎样才能摆脱这个警告呢

注意:我还得到了一个
java.lang.NoSuchMethodError:org.apache.log4j.Logger.isTraceEnabled()

p.p.S.:由于您的评论,我记得程序有一个“lib”文件夹,它不是由Maven包含在类路径中的,而是由Eclipse本身包含的,因此冲突的依赖项必须存在于那里。对不起,我完全忘记了,我想这是我把Maven和lib文件夹混在一起的错。我想我必须尝试将尽可能多的库转换为maven依赖项。
但奇怪的是,即使我编辑“Order and Export”将Maven依赖项放在顶部,问题仍然会出现。

您应该在
之外定义
,如下所示:-


...
org.apache.jena
以获取更多信息


我希望这会有所帮助。

StaticLoggerBinder
在slf4j-log4j12中很早加载的代码执行检查,以确定日志4J中是否有
跟踪级别。代码如下:

private StaticLoggerBinder() {
  loggerFactory = new Log4jLoggerFactory();
  try {
    Level level = Level.TRACE;
  } catch (NoSuchFieldError nsfe) {
    Util.report("This version of SLF4J requires log4j version 1.2.12 or later."+
                " See also http://www.slf4j.org/codes.html#log4j_version");
  }
}
对我来说,它似乎很不透气

可能是其他依赖项正在引入或实际上嵌入了log4j的早期版本。一些*-standalone.jar文件就是这样做的


在部署时检查类路径。您是否正在应用服务器中部署?服务器类路径上是否有较旧版本的log4j?在java认可的路径中?

将注释更改为答案,因为它似乎解决了问题

这是一个类加载器问题,maven正确地构建了它,但缺少它 对于依赖项。您能否尝试向提供缺少的依赖项 专家否则,我建议您查看特定于Eclipse的 依赖关系


是否尝试右键单击项目并更新项目依赖项?或者,请尝试在命令行中运行
mvn dependency:tree
,以确保您没有使用从其他地方引入的旧版本。我在Eclipse中查看了dependency tree,它显示所有版本都是按照我指定的版本管理的。在IDE中运行代码时还是仅在部署一次时才会出现此问题?@Olivier.Roger I只是注意到,当我使用“mvn测试”从命令行运行它时,问题并没有出现,而只是在Eclipse中出现。但是整个程序不适用于maven,因为它有一个包含在Eclipse类路径中的库文件夹。我问这个问题是因为一些应用服务器,比如JBoss提供了一个旧版本的Log4J,这可能会导致问题。所以这是一个类加载器问题,maven正确地构建了它,但是缺少依赖项。您可以尝试向maven提供缺少的依赖项吗?否则,我建议您查看特定于Eclipse的依赖项。此外,在我看来,这与当前的问题几乎没有关系。