Eclipse 2020-06中具有m2e的多个SLF4J绑定

问题描述

使用 m2e slf4j 为我工作时遇到了问题。 这不是第一次指出此问题。但是,其他人的情况更具体,仍然没有答案。

我安装了Eclipse-jee fresh。为了进行测试,我从 maven-archetype-quickstart 创建了一个最简单的maven项目。它只是打印出 Hello World!

尽管应用 m2e 可以编译并正常运行,但我收到的消息是红色的

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/rschumacher/install/eclipse-jee/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/rschumacher/install/eclipse-jee/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]

在执行 run as / Maven测试时,任何Maven项目都会发生这种情况。
查看 pom.xml dependency:tree 并没有帮助,因为冲突绑定是使用 m2e和osgi 的(例如据我所能解释的消息)。

因此, slf4j 会忽略配置,并且在安装了 m2e 的Eclipse中不再可用
如果我从命令行启动 mvn test ,则不会出现此类消息。 slf4j 日志正在正常运行。

您是否有任何想法或解决方法,以使 slf4j m2e 一起工作?

解决方法

您应该转到窗口->首选项-> Maven->安装

然后,代替使用EMBEDDED m2e,添加一个手动安装的外部设备,然后选择并应用。

eclipse preference screenshot

这是我如何解决此问题的方法。 因此,根据相同的机制,您也可以通过删除系统路径中的maven来解决此问题。

,

在曹操(Nickel Cao)的answer的帮助下,我(终于)能够修复您所描述的SLF4J错误/警告消息。但是,Nickel的解决方案仅修复了默认的Maven运行方式目标。我的自定义Maven构建目标-我曾经使用过的唯一目标-也必须在SLF4J错误消失之前进行更新。

注意::我在Eclipse 2020-09中解决了此问题,而不是2020-06。

这是我的操作方法,并提供了一些屏幕截图。 (抱歉,我没有将它们嵌入的声誉。)

  1. 在Window-> Preferences-> Maven-> Installations中添加您的外部Maven安装目录: Screenshot of Maven Installations dialog (我很确定此复选框是您选择默认Maven运行时的方式。)
  2. 通过从项目的上下文菜单中单击运行方式->运行配置,打开“运行配置”对话框: Screenshot of Project's Run As context menu
  3. 更新每个自定义Maven构建配置以使用外部Maven运行时: Screenshot of Run Configurations dialog

执行完最后一步后,我的自定义Run-As Maven构建将停止生成SLF4J错误: Screenshot of victory

干杯!