使用 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 一起工作?
答案 0 :(得分:3)
您应该转到窗口->首选项-> Maven->安装
然后,代替使用EMBEDDED m2e,添加一个手动安装的外部设备,然后选择并应用。
这是我如何解决此问题的方法。 因此,根据相同的机制,您也可以通过删除系统路径中的maven来解决此问题。
答案 1 :(得分:3)
在曹操(Nickel Cao)的answer的帮助下,我(终于)能够修复您所描述的SLF4J错误/警告消息。但是,Nickel的解决方案仅修复了默认的Maven运行方式目标。我的自定义Maven构建目标-我曾经使用过的唯一目标-也必须在SLF4J错误消失之前进行更新。
注意::我在Eclipse 2020-09中解决了此问题,而不是2020-06。
这是我的操作方法,并提供了一些屏幕截图。 (抱歉,我没有将它们嵌入的声誉。)
执行完最后一步后,我的自定义Run-As Maven构建将停止生成SLF4J错误: Screenshot of victory
干杯!