Eclipse 2020-06 中与 m2e 的多个 SLF4J 绑定
multiple SLF4J bindings with m2e in Eclipse 2020-06
让 slf4j 使用 m2e 为我工作时遇到问题。
这不是第一次提出这个问题。但是,其他人有更具体的案例,但仍然没有答案。
我全新安装了 Eclipse-jee。为了测试,我从 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]
执行 运行 as/Maven test.
时,任何 Maven 项目都会发生这种情况
查看 pom.xml 的 dependency:tree 没有帮助,因为冲突的绑定与 m2e 和 osgi(据我所知)。
因此,slf4j 忽略配置并且 不再可用 从 Eclipse 中使用 m2e 已安装。
如果我从命令行启动 mvn test,则不会出现此类消息。 slf4j 日志记录正常工作。
为了让 slf4j 再次与 m2e 一起工作,您有什么想法或解决方法吗?
最新更新:
请参阅 的回答以获得更全面的解决方案
你应该去 Window -> preference -> Maven -> Installations
然后不使用 EMBEDDED m2e,添加一个您手动安装的外部 m2e,然后选择它并应用。
eclipse preference screenshot
这就是我解决这个问题的方法。
所以根据同样的机制,你也可以通过删除系统路径中的maven来解决这个问题。
在 Nickel Cao 的 的帮助下,我(最终)能够修复您描述的 SLF4J error/warning 消息。但是,Nickel 的解决方案仅修复了默认的 Maven 运行 作为目标。我的自定义 Maven 构建目标——我使用过的唯一目标——也必须在 SLF4J 错误消失之前进行更新。
注意:我在 Eclipse 2020-09 而非 2020-06 中修复了该问题。
以下是我的操作方式,并附有一些屏幕截图。 (抱歉,我没有嵌入它们的声誉。)
- 在 Window -> Preferences -> Maven -> Installations 中添加你的外部 Maven 安装目录:
Screenshot of Maven Installations dialog
(我很确定复选框是你 select 默认 Maven 运行时的方式..)
- 通过单击项目上下文菜单中的 运行 As -> 运行 Configurations 打开 运行 Configurations 对话框:
Screenshot of Project's Run As context menu
- 更新每个自定义 Maven 构建配置以使用外部 Maven 运行时间:
Screenshot of Run Configurations dialog
一旦我执行了这最后一步,我的自定义 Run-As Maven 构建就停止生成 SLF4J 错误:
Screenshot of victory
干杯!
自 Eclipse m2e 1.18.2 起,您遇到的问题应该针对 EMBEDDED Maven 运行时得到修复。
Eclipse m2e 1.19.0(也包含修复程序)是 Eclipse 2021-12 版本的一部分。
如果您有兴趣,这是解决问题的 m2e GitHub 存储库中的 PullRequest:
https://github.com/eclipse-m2e/m2e-core/pull/369
让 slf4j 使用 m2e 为我工作时遇到问题。 这不是第一次提出这个问题。但是,其他人有更具体的案例,但仍然没有答案。
我全新安装了 Eclipse-jee。为了测试,我从 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]
执行 运行 as/Maven test.
时,任何 Maven 项目都会发生这种情况
查看 pom.xml 的 dependency:tree 没有帮助,因为冲突的绑定与 m2e 和 osgi(据我所知)。
因此,slf4j 忽略配置并且 不再可用 从 Eclipse 中使用 m2e 已安装。
如果我从命令行启动 mvn test,则不会出现此类消息。 slf4j 日志记录正常工作。
为了让 slf4j 再次与 m2e 一起工作,您有什么想法或解决方法吗?
最新更新:
请参阅
你应该去 Window -> preference -> Maven -> Installations
然后不使用 EMBEDDED m2e,添加一个您手动安装的外部 m2e,然后选择它并应用。
eclipse preference screenshot
这就是我解决这个问题的方法。 所以根据同样的机制,你也可以通过删除系统路径中的maven来解决这个问题。
在 Nickel Cao 的
注意:我在 Eclipse 2020-09 而非 2020-06 中修复了该问题。
以下是我的操作方式,并附有一些屏幕截图。 (抱歉,我没有嵌入它们的声誉。)
- 在 Window -> Preferences -> Maven -> Installations 中添加你的外部 Maven 安装目录: Screenshot of Maven Installations dialog (我很确定复选框是你 select 默认 Maven 运行时的方式..)
- 通过单击项目上下文菜单中的 运行 As -> 运行 Configurations 打开 运行 Configurations 对话框: Screenshot of Project's Run As context menu
- 更新每个自定义 Maven 构建配置以使用外部 Maven 运行时间: Screenshot of Run Configurations dialog
一旦我执行了这最后一步,我的自定义 Run-As Maven 构建就停止生成 SLF4J 错误: Screenshot of victory
干杯!
自 Eclipse m2e 1.18.2 起,您遇到的问题应该针对 EMBEDDED Maven 运行时得到修复。 Eclipse m2e 1.19.0(也包含修复程序)是 Eclipse 2021-12 版本的一部分。
如果您有兴趣,这是解决问题的 m2e GitHub 存储库中的 PullRequest: https://github.com/eclipse-m2e/m2e-core/pull/369