Maven项目集成GraphViz遇SLF4J多提供者冲突问题求助
解决Maven项目中SLF4J多提供者冲突问题
先通过Maven命令排查依赖树,定位所有SLF4J相关的实现依赖:
mvn dependency:tree | grep -E "(slf4j|logback|log4j)"执行后会列出所有关联的日志依赖,你能清楚看到哪些依赖引入了重复的SLF4J提供者(比如同时出现
logback-classic和slf4j-log4j12这类不同的实现)。找到重复的提供者后,在对应的依赖中添加排除规则。比如如果GraphViz的依赖附带了
logback-classic,而你的项目本身使用的是另一种SLF4J实现,就给GraphViz的依赖加上排除:<dependency> <!-- 你的GraphViz相关依赖 --> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> </exclusions> </dependency>最后确认你的pom.xml中只保留一个SLF4J实现依赖。比如选择logback作为实现的话,只保留:
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> </dependency>避免同时存在多个不同的SLF4J实现依赖。
SLF4J作为日志门面框架,同一时间只能绑定一个具体的日志实现类,多个提供者共存就会触发该异常,通过排查依赖树并移除冗余的实现依赖即可解决问题。
内容的提问来源于stack exchange,提问作者Sobira Muminova
相关产品推荐
相关产品推荐

